پس از اینکه کنترل وب مورد نظر خود را به کنترل داده متصل ساختید و ارتباط بین آنها بر قرار شد ، مرحله بعدی انتخاب اطلاعاتی است که شما می خواهید تا کنترل داده از منبع اطلاعاتی دریافت کرده و سپس توسط کنترل وب نمایش دهد .
در این قسمت باید توجه داشته باشید که عملیات انتخاب داده توسط کنترل داده تعیین و اجرا شده و نه کنترل وب . در واقع کنترل وب ، فقط نمایش دهنده اطلاعاتی است که کنترل داده فراهم کرده و خود نقشی در دستورات انتخاب داده ندارد .

فرض کنید که شما یک پایگاه داده مربوط به یک دانشگاه را در اختیار دارید . در این پایگاه داده ، جدول های مختلفی وجود دارد که هر کدام اطلاعات گروه خاصی مثل دانشجویان ، اساتید و … را در خود جای داده اند . شما می خواهید در صفحات مختلف برنامه خود ، هر قسمت اطلاعات مربوط به یک جدول را نشان داده و برخی از قسمت ها هم فقط اطلاعات خاصی را به کاربر نمایش دهد . برای مثال می خواهید در یک قسمت اطلاعات عمومی دانشجویان و در قسمت دیگر فقط ریز نمرات آنها را نمایش دهید . در این حالت بایستی دستورات لازم برای مدل های مختلف انتخاب داده را تعیین کنید .
کنترل های داده روش های مختلفی را برای تعیین داده های انتخابی دارند که در ادامه آنها را بررسی می کنیم :

۱ ) کنترل ObjectDataSource :

کنترل ObjectDataSource ، برای خواندن اطلاعات مورد نظر از پایگاه داده ، متدی که نام آن در خاصیت SelectMethod کنترل تعیین شده است را فراخوانی و اجرا می کند . برای مثال فرض کنید که در یک کنترل ObjectDataSource ، یک متد جهت فراخوانی داده به نام GetAllStudents طراحی کرده ایم ، که اطلاعات عمومی دانشجویان را از پایگاه داده انتخاب و دریافت می کند . بنابراین باید مقدار خاصیت SelectMethod کنترل را برابر با نام متد مورد نظر ِیعنی GetAllStudents قرار دهیم . در زمان اجرا برنامه ، کنترل متد تعیین شده را فراخوانی کرده و بر حسب آن اطلاعات درخواستی را دریافت نموده و به کنترل وب متصل جهت نمایش ارسال می کند .

مثال ۱ : در مثال زیر یک کنترل ObjectDataSource و یک کنترل GridView را ایجاد کرده ایم . همچنین یک متد به نام GetAllStudents را برای دریافت اطلاعات از منبع داده ای در خاصیت SelectMethod آن تعیین کرده ایم :

 <form id=”form1″ runat=”server”><asp:GridView    ID=”GridView1″    runat=”server”    DataSourceID=”ObjectDataSource1″>
</asp:GridView><asp:ObjectDataSource   ID=”ObjectDataSource1″  runat=”server”     SelectMethod = “GetAllStudents”    typename =”Sample.AspNet.CS.Students”>
</asp:ObjectDataSource>< form >

 

۱ ) کنترل های SqlDataSource و AccessDataSource :

کنترل های SqlDataSource و AccessDataSource برای انتخاب اطلاعات مورد نظر از پایگاه داده ، دستور SQL تعیین شده در خاصیت SelectCommand خود را اجرا می کنند . روش استفاده شده به این شرح است گه برنامه نویس بایستی یک دستور مناسب به زبان SQL را برای داده های که می خواهد از پایگاه داده دریافت کند را در خاصیت SelectCommand کنترل قرار دهد . کنترل در هنگام اجرا ، این دستور SQL را برای دریافت اطلاعات مورد استفاده قرار می دهد .

همچنین کنترل های SqlDataSource و AccessDataSource می توانند از توابع آماده SQL یا Stored Procedure نیز برای انتخاب داده استفاده کنند . توابع آماده دستورات SQL هسنتد که در قالب رویه هایی آماده از قبل در برنامه طراحی شده و در قسمت Stored Procedure پایگاه داده مربوطه نگهداری می شوند . چنانچه بخواهیم از توابع آماده در انتخاب اطلاعات استفاده کنیم ، باید مقدار خاصیت SelectCommand کنترل را برابر با نام تابع آماده مورد نظر قرار داده و همچنین مقدار خاصیت SelectCommandType کنترل را بر روی مقدار Stored Procedure تنظیم کنیم .در مثال های زیر موارد ذکر شده را به صورت عملی نمایش می دهیم :

مثال ۲ : در مثال زیر یک کنترل AccessDataSource و یک کنترل FormView را بر روی صفحه قرار داده و آنها را به هم متصل ساخته ایم . سپس دستور لازم برای دریافت اطلاعات توسط کنترل AccessDataSource از پایگاه داده MyAccessDataBase.mdb را در خاصیت SelectCommand آن تعیین کرده ایم . این کنترل بایستی کلیه اطلاعات دانشجویان را از جدول Students دریافت کرده و برای نمایش به کنترل FormView ارسال کند :

 <form id=”form2″ runat=”server”><asp:FormView    ID=”FormView1″    runat=”server”    DataSourceID=”Access_EX”>
</asp:FormView><asp:AccessDataSource   ID=”Access_EX”    runat=”server”    DataFile=”~/App_Data/MyAccessDataBase.mdb”   SelectCommand = “Select * From Students”
</asp:AccessDataSource>< form >

 

مثال ۳ : در مثال زیر یک کنترل SqlDataSource و یک کنترل FormView را بر روی صفحه قرار داده و آنها را به هم متصل ساخته ایم . سپس دستور لازم برای دریافت اطلاعات توسط کنترل SqlDataSource از پایگاه داده را در خاصیت SelectCommand آن تعیین کرده ایم . این کنترل بایستی کلیه اطلاعات دانشجویان را از جدول Students دریافت کرده و برای نمایش به کنترل FormView ارسال کند :

<form id=”form2″ runat=”server”><asp:FormView    ID=”FormView1″    runat=”server”    DataSourceID=”SqlControl1″>
</asp:FormView><asp:SqlDataSource   ID=”SqlControl1″    runat=”server”   SelectCommand = “Select * From Students”   ConnectionString=”<%$ ConnectionStrings:Univer_Connection %>”
</asp:SqlDataSource>

< form >

مثال ۳ : مثال قبل را بازنویسی کرده ایم ، که در آن کنترل SqlDataSpurce برای دریافت اطلاعات از پایگاه داده باید تابع آماده MyFunction را اجرا کند . توجه شود که مفدار خاصیت SelectCommandType کنترل را نیز با مقدار Stored Procedure تنظیم کرده ایم :

<form id=”form3″ runat=”server”><asp:FormView    ID=”FormView1″    runat=”server”    DataSourceID=”SqlControl1″>
</asp:FormView><asp:SqlDataSource   ID=”SqlControl1″    runat=”server”   SelectCommand = “MyFunction”   SelectCommandType = “Stored Procedure”
ConnectionString=”<%$ ConnectionStrings:Univer_Connection %>”
</asp:SqlDataSource>

< form >