همانطور که در بخش قبلی مثالی را ارائه دادیم ، در برنامه های واقعی کاربر انتظار دارد تا عملیات های مختلف داده ای از جمله انتخاب ، ویرایش ، صفحه بندی ، فیلترینگ ، مرتب سازی و … بر حسب مقادیری انجام شوند که در زمان اجرا توسط کاربر تعیین شده و به برنامه ارسال می گردند . استفاده از پارامترها به برنامه انعطاف پذیری و قابلیت های زیادی را می بخشد و این امر باعث می شود تا محتویات و اطلاعات برنامه در هر لحظه بر حسب سلیقه و یا نیاز کاربر تغییر کند . اگر برنامه قادر به استفاده از پارامترها در زمان اجرا نباشد ، به برنامه ای تبدیل می شود که فقط به جزیئات زمان طراحی محدود شده و یک برنامه غیر اکتیو خواهد بود . بنابراین باید امکاناتی را فراهم کرد که بتوان در برناهم های وب از پارامترها و مقادیر ارسالی در زمان اجرا استفاده کرد .
کنترل های سرور داده از جمله SqlDataSource به ما امکان می دهند تا در دستورات SQL و یا توابع آماده ( Stored Procedure ) مورد استفاده در آنها از پازامترها استفاده کنیم . مقدار این پارامترها می تواند از منابع مختلفی همچون کنترل های HTML و یا ASP.NET موجود بر روی صفحه ، کوکی های صفحه ، فرمه های HTML و … تامین شوند .
از پارامترها می توان برای تعیین اطلاعاتی که لازم است از پایگاه داده استخراج شده و یا اطلاعاتی که می خواهیم آنها را ویرایش کنیم ، استفاده کرد . همچنین پارامترها را برای اعمال دیگر داده ای همچون صفحه بندی ، مرتب سازی ، فیلترینگ داده و … به کار برد .
استفاده از پارامترها با کنترل SqlDataSource :
کنترل SqlDataSource به ما امکان می دهد تا برای هر عملیات داده ای از پارامترها در دستورات و یا توابع آماده مورد نظر برای آن عملیات ، استفاده کرد . کنترل SqlDataSource برای هر عکملیات داده ای دارای یک مجموعه پارامتر خاص است که در صورتی که بخواهیم از پارامترها در آن عملیات داده ای استفاده کنیم ، باید مجموعه پارامتر مربوط را در درون تگ کنترل SqlDataSource ایجاد کرده و به ازای هر عدد پارامتر استفاده شده از آن مجموعه ، باید یک تگ پارامتر مرتبط به آن را که شامل خصوصیات و اطلاعات لازم راجع به پارامتر است را در درون مجموعه تعریف کنیم . تگ معرفی پارامتر شامل اطلاعاتی همچون نام پارامتر ، نوع آن ، محل تامین داده و … می باشد .
برای مثال کنترل SqlDataSource در عملیات انتخاب داده از مجموعه < SelectParameters > ، در عملیات ویرایش اطلاعات از مجم.عه < UpdateParameters > ، در عملیات فیلترینگ داده از < FilterParameters > و … استفاده می کند . هنگامی که بخواهیم از پارامترها برای هر یک از عملیات های فوق استفاده کنیم ، باید تگ مجموعه مورد نظر را در درون تگ کنترل SqlDataSource ایجاد کرده و به ازای هر پارامتر استفاده شده در آن عملیات ، تگ مربوط به آن پارامتر را در درون تگ مجموعه خود تعیین کنیم . برای دریافت اطلاعات درباره نحوه استفاده از پارامترها با کنترل های سرور داده و انواع پارامترهای مورد استفاده در صفحات ASP.NET می توانید به بخش استفاده از پارامترها همراه با کنترل های داده ۱ و ۲ بروید .
در مثال های زیر از پارامترها در دستوارت انتخاب داده استفاده می کنیم .
استفاده از پارامترها در دستور انتخاب داده < SelectParametres > :
هنگام تعیین دستور انتخاب داده ( SelectCommand ) که در بخش های قبل معرفی کردیم ، در یک کنترل SqlDataSource می توان از پارامترها برای ارسال مقادیر جهت تعیین اطلاعات برای انتخاب رکورد ی رکوردهای مورد نظر از جدول داده ای استفاده کرد . در این حالت پارامترها حاوی مقدار یک یا چند فیلد ( معمولا فیلد رکورد ) داده ای مربوط به یک یا چند رکورد است ، که می خواهیم از جدول داده انتخاب و نمایش دهیم .
برای استفاده از پارامترها در دستور انتخاب داده باید مراحل زیر را انجام دهیم :
تگ مجموعه پارامترهای دستور انتخاب داده یعنی < SelectParameters > را به درون تگ کنترل SqlDataSource اضافه کنیم .
به ازای هر عدد پارامتری که می خواهیم در دستور SelectCommand برای انتخاب داده استفاده کنیم ، یک تگ پارامتر ASP.NET شامل مشخصات و اطلاعات لازم برای آن پارامتر را ، در درون تگ < SelectParameters > ایجاد کنیم .
پارامترهای مورد استفاده را در درون دستور انتخاب داده SelectCommand نام گذاری کرده و آن ها را به منبع تامین داده متصل کنیم .
نکته : در هنگام استفاده از پارامترها در دستورات داده ای ، برای تعیین اینکه یک کلمه مفهوم پارامتر را دارد ، باید در ابتدای نام آن یک کاراکتر @ را قرار دهیم . برنامه هر بار که به چنین کلمه ای برخورد کند ، متوجه می شود که یک پارامتر است و مقدار آن باید از منبع داده تعیین شده ، تامین شود .
برای نشان دادن و تفهیم بهتر مطالب به یک مثال اشاره می کنیم . فرض کنیم که می خواهیم در جدول Students پایگاه داده دانشگاه که آنرا در مثال های قبل نیز به کار برده ایم ، اطلاعات دانشجویان را در ۲ حالت متفاوت نمایش دهیم . در حالت اول اطلاعات دانشجویانی را نمایش دهیم که رشته تحصیلی ( Major ) آنها سخت افزار ( HardWare ) بوده و در حالت دوم نیز اطلاعات دانشجویانی را نمایش دهیم که رشته تحصیلی آنها نرم افزار ( SoftWare ) است . در این حالت باید مقدار فیلد رشته تحصیلی ( Major ) در جدول Students یعنی SoftWare یا HardWare را در هر حالت به وسیله یک پارامتر به دستور انتخاب داده ارسال کنیم ، تا کنترل فقط اطلاعات دانشجویان مورد نظر را از جدول داده دریافت کرده و ارسال کند . پس از تعیین پارامتر مورد نظر و تنظیم نحوه مقدار دهی آن در هنگام اجرا ، برنامه به صورت اتوماتیک مقدار تعیین شده برای پارامتر را دریافت کرده و به کنترل ارسال می کند . سپس مقدار ارسال شده در دستور انتخاب داده به جای پارامتر تعیین شده برای آن نشسته و دستور انتخاب داده اجرا می شود .
مثال : مثال بالا را در عمل نشان می دهیم . در این مثال یک کنترل SqlDataSource را به پایگاه داده UniverCity و جدول Students متصل کرده و اطلاعات دریافتی را به وسیله یک کنترل GridView نمایش می دهیم . یک پارامتر به نام Major را در دستور SelectCommand کنترل SqlDataSource برای دریافت مقدار رشته تحصیلی دانشجویان ایجاد کرده ایم . این پارامتر مقدار خود را از یک کنترل < asp:RadioButtonlist > که دارای دو مقدار SoftWare , HardWare است دریافت می کند . هر بار که مقدار یکی از گزینه های کنترل انتخاب شود ، مقدار رشته تحصیلی انتخاب شده به پارامتر Major@ ارسال شده و دستور انتخاب داده کنترل SqlDataSource با مقدار آن اجرا می شود :
< asp:SqlDataSource runat=”server” ID=”SqlData1″ ConnectionString=”data source = Developer-PC; initial catalog = UniverCity ; Integrated Security = SSPI ” ProviderName=”System.Data.SqlClient” SelectCommand=”Select * From Students Where Major = @Major” > < SelectParameters > < asp:ControlParameter ControlID=”RBL1″ Name=”Major” / > < /SelectParameters > < /asp:SqlDataSource >< asp:GridView runat=”server” ID=”G1″ DataSourceID=”SqlData1″ > < /asp:GridView > < asp:RadioButtonList runat=”server” ID=”RBL1″ AutoPostBack=”true” > |