ASP.NET - Data Binding

هر کنترل فرم وب ASP.NET متد DataBind را از کلاس Control والد خود به ارث می برد، که به آن قابلیت ذاتی می دهد تا داده ها را به حداقل یکی از ویژگی های خود متصل کند. این به عنوان اتصال داده ساده یا اتصال داده درون خطی شناخته می شود.اتصال ساده داده شامل پیوست کردن هر مجموعه (مجموعه آیتم) است که رابط IEnumerable یا کلاس های DataSet و DataTable را به ویژگی DataSource کنترل پیاده سازی می کند.از سوی دیگر، برخی از کنترل‌ها می‌توانند رکوردها، فهرست‌ها یا ستون‌های داده را از طریق یک کنترل DataSource به ساختار خود متصل کنند. این کنترل ها از کلاس BaseDataBoundControl مشتق شده اند. به این کار الزام آور داده های اعلامی می گویند.کنترل‌های منبع داده به کنترل‌های محدود به داده کمک می‌کنند تا عملکردهایی مانند مرتب‌سازی، صفحه‌بندی و ویرایش مجموعه‌های داده را اجرا کنند.BaseDataBoundControl یک کلاس انتزاعی است که توسط دو کلاس انتزاعی دیگر به ارث می رسد:DataBoundControlHierarchicalDataBoundControlکلاس انتزاعی DataBoundControl دوباره توسط دو کلاس انتزاعی دیگر به ارث می رسد:ListControlCompositeDataBoundControlکنترل هایی که قادر به اتصال ساده داده ها هستند از کلاس انتزاعی ListControl مشتق شده اند و این کنترل ها عبارتند از:Bulleted ListCheckBoxListفهرست کشوییکادر فهرستRadioButtonListکنترل‌هایی که قادر به اتصال داده‌های اعلانی (یک پیوند داده پیچیده‌تر) هستند از کلاس انتزاعی CompositeDataBoundControl مشتق شده‌اند. این کنترل ها عبارتند از:مشاهده جزئیاتFormViewGridViewفهرست رکوردهااتصال ساده داده هااتصال ساده داده شامل لیست های انتخابی فقط خواندنی است. این کنترل ها می توانند به یک لیست آرایه یا فیلدهای یک پایگاه داده متصل شوند. لیست انتخاب دو مقدار را از پایگاه داده یا منبع داده می گیرد. یک مقدار توسط لیست نمایش داده می شود و دیگری به عنوان مقدار مربوط به نمایش در نظر گرفته می شود.اجازه دهید یک مثال کوچک برای درک مفهوم بیاوریم. یک وب سایت با یک لیست گلوله ای و یک کنترل SqlDataSource روی آن ایجاد کنید. کنترل منبع داده را برای بازیابی دو مقدار از پایگاه داده خود پیکربندی کنید (ما از همان جدول DotNetReferences مانند فصل قبل استفاده می کنیم).انتخاب منبع داده برای کنترل لیست گلوله‌ای شامل موارد زیر است:انتخاب کنترل منبع دادهانتخاب یک فیلد برای نمایش که به آن فیلد داده می گویندانتخاب یک فیلد برای مقدارهنگامی که برنامه اجرا می شود، بررسی کنید که کل ستون عنوان به لیست گلوله بندی شده و نمایش داده شود.الزام آور داده های اعلامیقبلاً در آموزش قبلی با استفاده از کنترل GridView از binding داده های اعلانی استفاده کرده ایم. دیگر کنترل‌های مرکب داده‌ای که قادر به نمایش و دستکاری داده‌ها به صورت جدولی هستند، کنترل DetailsView، FormView و RecordList هستند.در آموزش بعدی، فناوری مدیریت پایگاه داده، یعنی ADO.NET را بررسی خواهیم کرد.با این حال، اتصال داده شامل اشیاء زیر است:مجموعه داده ای که داده های بازیابی شده از پایگاه داده را ذخیره می کند.ارائه‌دهنده داده، که داده‌ها را با استفاده از یک فرمان روی یک اتصال، از پایگاه داده بازیابی می‌کند.آداپتور داده ای که دستور select ذخیره شده در شی فرمان را صادر می کند. همچنین قادر به به روز رسانی داده ها در پایگاه داده با صدور عبارت Insert، Delete و Update است.رابطه بین اشیاء اتصال داده:مثالاجازه دهید مراحل زیر را انجام دهیم:مرحله (1): یک وب سایت جدید ایجاد کنید. با کلیک راست روی نام راه حل در Solution Explorer و انتخاب مورد «Class» از کادر محاوره ای «افزودن آیتم»، یک فهرست کتاب به نام کلاس اضافه کنید. نام آن را booklist.cs بگذارید.using System;using System.Data;using System.Configuration;using System.Linq;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.HtmlControls;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Xml.Linq;namespace databinding{ public class booklist { protected String bookname; protected String authorname; public booklist(String bname, String aname) { this.bookname = bname; this.authorname = aname; } public String Book { get { return this.bookname; } set { this.bookname = value; } } public String Author { get { return this.authorname; } set { this.authorname = value; } } }}مرحله (2): چهار کنترل لیست را به صفحه اضافه کنید، یک کنترل جعبه لیست، یک لیست دکمه های رادیویی، یک لیست چک باکس، و یک لیست کشویی و چهار برچسب به همراه این کنترل های لیست. صفحه باید از نظر طراحی شبیه به این باشد:فایل منبع باید به صورت زیر باشد:<form id="form1" runat="server"> <div> <table style="width: 559px"> <tr> <td style="width: 228px; height: 157px;"> <asp:ListBox ID="ListBox1" runat="server" AutoPostBack="True" OnSelectedIndexChanged="ListBox1_SelectedIndexChanged"> </asp:ListBox> </td> <td style="height: 157px"> <asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True" OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged"> </asp:DropDownList> </td> </tr> <tr> <td style="width: 228px; height: 40px;"> <asp:Label ID="lbllistbox" runat="server"></asp:Label> </td> <td style="height: 40px"> <asp:Label ID="lbldrpdown" runat="server"> </asp:Label> </td> </tr> <tr> <td style="width: 228px; height: 21px"> </td> <td style="height: 21px"> </td> </tr> <tr> <td style="width: 228px; height: 21px"> <asp:RadioButtonList ID="RadioButtonList1" runat="server" AutoPostBack="True" OnSelectedIndexChanged="RadioButtonList1_SelectedIndexChanged"> </asp:RadioButtonList> </td> <td style="height: 21px"> <asp:CheckBoxList ID="CheckBoxList1" runat="server" AutoPostBack="True" OnSelectedIndexChanged="CheckBoxList1_SelectedIndexChanged"> </asp:CheckBoxList> </td> </tr> <tr> <td style="width: 228px; height: 21px"> <asp:Label ID="lblrdlist" runat="server"> </asp:Label> </td> <td style="height: 21px"> <asp:Label ID="lblchklist" runat="server"> </asp:Label> </td> </tr> </table> </div></form>مرحله (3): در نهایت، کد زیر را در پشت روتین های برنامه بنویسید:public partial class _Default : System.Web.UI.Page{ protected void Page_Load(object sender, EventArgs e) { IList bklist = createbooklist(); if (!this.IsPostBack) { this.ListBox1.DataSource = bklist; this.ListBox1.DataTextField = "Book"; this.ListBox1.DataValueField = "Author"; this.DropDownList1.DataSource = bklist; this.DropDownList1.DataTextField = "Book"; this.DropDownList1.DataValueField = "Author"; this.RadioButtonList1.DataSource = bklist; this.RadioButtonList1.DataTextField = "Book"; this.RadioButtonList1.DataValueField = "Author"; this.CheckBoxList1.DataSource = bklist; this.CheckBoxList1.DataTextField = "Book"; this.CheckBoxList1.DataValueField = "Author"; this.DataBind(); } } protected IList createbooklist() { ArrayList allbooks = new ArrayList(); booklist bl; bl = new booklist("UNIX CONCEPTS", "SUMITABHA DAS"); allbooks.Add(bl); bl = new booklist("PROGRAMMING IN C", "RICHI KERNIGHAN"); allbooks.Add(bl); bl = new booklist("DATA STRUCTURE", "TANENBAUM"); allbooks.Add(bl); bl = new booklist("NETWORKING CONCEPTS", "FOROUZAN"); allbooks.Add(bl); bl = new booklist("PROGRAMMING IN C++", "B. STROUSTROUP"); allbooks.Add(bl); bl = new booklist("ADVANCED JAVA", "SUMITABHA DAS"); allbooks.Add(bl); return allbooks; } protected void ListBox1_SelectedIndexChanged(object sender, EventArgs e) { this.lbllistbox.Text = this.ListBox1.SelectedValue; } protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e) { this.lbldrpdown.Text = this.DropDownList1.SelectedValue; } protected void RadioButtonList1_SelectedIndexChanged(object sender, EventArgs e) { this.lblrdlist.Text = this.RadioButtonList1.SelectedValue; } protected void CheckBoxList1_SelectedIndexChanged(object sender, EventArgs e) { this.lblchklist.Text = this.CheckBoxList1.SelectedValue; }}موارد زیر را رعایت کنید:کلاس booklist دو ویژگی دارد: bookname و authorname.متد createbooklist یک روش تعریف شده توسط کاربر است که آرایه ای از اشیاء فهرست کتاب به نام allbooks را ایجاد می کند.کنترل کننده رویداد Page_Load اطمینان حاصل می کند که فهرستی از کتاب ها ایجاد شده است. لیست از نوع IList است که رابط IEnumerable را پیاده سازی می کند و می تواند به کنترل های لیست متصل شود. کنترل کننده رویداد بارگذاری صفحه، شی IList 'bklist' را با کنترل های لیست پیوند می دهد. ویژگی bookname نمایش داده می شود و ویژگی authorname به عنوان مقدار در نظر گرفته می شود.هنگامی که صفحه اجرا می شود، اگر کاربر کتابی را انتخاب کند، نام آن انتخاب شده و توسط کنترل های لیست نمایش داده می شود، در حالی که برچسب های مربوطه نام نویسنده را نشان می دهند که مقدار متناظر برای نمایه انتخابی کنترل لیست است.