السمة الفردية | : <%# custID %> |
أوامر التجميع | <asp:ListBox id="List1" datasource='<%# myArray %>' runat="server"> |
Expression Contact | <%# ( customer.FirstName + " " + customer.LastName ) %> |
القيمة المرجعة | للرصيد المتميز للطريقة: <%# GetBalance(custID) %> |
على الرغم من أن بناء الجملة أعلاه يبدو مشابهًا لبناء جملة Response.Write الخاص بـ ASP (<%= %>)، فإن سلوكهم هو ولكنه مختلفة بالتأكيد. يقوم بناء جملة ASP Response.Write بحساب القيمة أثناء معالجة الصفحة، بينما يقوم بناء جملة ربط بيانات ASP.NET بحساب القيمة فقط عند استدعاء الأسلوب DataBind.
DataBind هي طريقة للصفحة وجميع عناصر التحكم في الخادم. عندما تقوم باستدعاء DataBind الخاص بعنصر التحكم الأصلي، فإنه سيتم استدعاء أسلوب DataBind الخاص بكافة عناصر التحكم التابعة بدوره. على سبيل المثال، سيقوم DataList1.DataBind() باستدعاء أسلوب DataBind لكافة عناصر التحكم في قالب DataList. يؤدي استدعاء أسلوب DataBind الخاص بالصفحة - Page.DataBind() أو استدعاء DataBind() ببساطة - إلى تقييم كافة تعبيرات ربط البيانات على الصفحة. عادةً ما يتم استدعاء الأسلوب DataBind فقط في حدث Page_Load الخاص بالصفحة، كما هو موضح في المثال التالي.
في أي قسم تعريفي لصفحة .aspx، يمكنك استخدام بناء جملة الربط وتحديد نوع البيانات المتوقع في وقت التشغيل لتقييمها. تعرض الخصائص والتعبيرات والأساليب البسيطة في الأمثلة أعلاه محتوى النص للمستخدم عند تقييمه. في هذه الحالة، تكون قيمة تعبير ربط البيانات من النوع String. في مثال المجموعة أعلاه، نوع قيمة بناء جملة ربط البيانات هو خاصية DataSource الخاصة بـ ListBox. ستجد أن صب نوع القيمة في تعبير الربط ضروري للحصول على النتائج المرجوة. على سبيل المثال، إذا كان العدد عددًا صحيحًا:
عدد السجلات: <%# count.ToString() %>
يدعم بناء جملة ربط بيانات ASP.NET ربط المتغيرات العامة وخصائص الصفحة وخصائص عناصر التحكم الأخرى في الصفحة. يوضح المثال التالي كيفية الارتباط بالمتغيرات العامة والخصائص البسيطة للصفحة. يرجى ملاحظة أنه تمت تهيئة هذه القيم قبل استدعاء DataBind().
< لغة البرنامج النصي = "VB" runat = "الخادم">
Sub Page_Load (المرسل ككائن، e كـ EventArgs)
Page.DataBind
End Sub
ReadOnly Property custID() كسلسلة
يحصل
عودة "الفكي"
نهاية الحصول على
نهاية الخاصية
للقراءة فقط الخاصية orderCount() كعدد صحيح
يحصل
العودة 11
نهاية الحصول على
نهاية الملكية
</ نص >
< إجراء النموذج = "DataBind1_vb.aspx" runat = "الخادم" >
العميل: <b><%# معرف العميل %></b><br />
الأوامر المفتوحة: <b><%# orderCount %></b>
</form>
يوضح المثال التالي كيفية الارتباط بخاصية عنصر تحكم آخر:
<asp:DropDownList id="StateList" runat="server">
<asp:ListItem>CA</asp:ListItem>
…
</asp:DropDownList>
<asp:button ID="Button1" Text="Submit" OnClick="SubmitBtn_Click" runat="server"/>
الحالة المحددة: <asp:label ID="Label1" text='<%# StateList.SelectedItem.Text %>' runat="server"/>
تستخدم عناصر تحكم الخادم من نوع القائمة (مثل DropDownList وListBox وHTMLSelect) المجموعات كمصادر بيانات. يوضح المثال التالي كيفية الارتباط بنوع مجموعة وقت تشغيل اللغة العامة. يمكن ربط عناصر التحكم هذه فقط بالمجموعات التي تدعم واجهات Ienumerable أو Icollection أو IlistSource. والأكثر شيوعًا، أنه يمكن ربطه بـ ArrayList وHashtable وDataView وDataReader. يوضح المثال التالي كيفية الارتباط بقائمة ArrayList.
Sub Page_Load (المرسل ككائن، e كـ EventArgs)
إذا لم يكن IsPostBack ثم
تعتيم القيم كـ ArrayList= new ArrayList()
القيم.إضافة("IN")
القيم.إضافة("KS")
القيم.إضافة("MD")
القيم.إضافة("MI")
القيم. أضف ("OR")
value.Add ("TN")
DropDown1.DataSource = القيم
DropDown1.DataBind
نهاية إذا
End Sub
يوضح المثال التالي كيفية ربط DataView. الرجاء ملاحظة أنه تم تعريف فئة DataView في مساحة الاسم System.Data.
Sub Page_Load (المرسل ككائن، e كـ EventArgs)
إذا لم يكن IsPostBack ثم
خافت dt كـ DataTable
خافت الدكتور كـ DataRow
Dim i As Integer
'Create DataTable
dt = جدول بيانات جديد
dt.Columns.Add(New DataColumn("IntegerValue"، GetType(Integer)))
dt.Columns.Add(New DataColumn("StringValue"، GetType(String)))
dt.Columns.Add(New DataColumn("DateTimeValue"، GetType(DateTime)))
dt.Columns.Add(New DataColumn("BooleanValue", GetType(Boolean)))
'املأ بعض البيانات
لـ i = 1 إلى 9
الدكتور = dt.NewRow()
الدكتور (0) = ط
الدكتور (1) = "العنصر" + i.ToString()
dr(2) = DateTime.Now.ToShortTimeString
إذا (i Mod 2 <> 0) ثم
الدكتور (3) = صحيح
آخر
الدكتور (3) = خطأ
نهاية إذا
'إضافة صفوف بيانات إلى الجدول dt.Rows.Add(dr)
التالي
GridView1.DataSource = New DataView(dt)
GridView1.DataBind()
نهاية إذا
End Sub
يوضح المثال التالي كيفية ربط Hashtable.
Sub Page_Load (المرسل ككائن، e كـ EventArgs)
إذا لم يكن IsPostBack ثم
Dim h As Hashtable = Hashtable () الجديد
ح.إضافة ("key1"، "value1")
ح.إضافة ("key2"، "value2")
h.Add ("key3"، "value3")
MyDataList.DataSource = h
MyDataList.DataBind
نهاية إذا
End Sub
في كثير من الأحيان، قد ترغب في معالجة البيانات قبل ربطها بالصفحة أو عنصر التحكم. يوضح المثال التالي كيفية ربط التعبيرات وقيم إرجاع الأسلوب.
Sub Page_Load (المرسل ككائن، e كـ EventArgs)
إذا لم يكن IsPostBack ثم
تعتيم القيم كـ ArrayList=
قيم ArrayList() الجديدة. أضف (0)
قيم.إضافة (1)
قيم.إضافة (2)
القيم.إضافة(3)
القيم.إضافة(4)
القيم.إضافة(5)
value.Add (6)
DataList1.DataSource = القيم
DataList1.DataBind
نهاية إذا
نهاية
الوظيفة الفرعية EvenOrOdd (الرقم كعدد صحيح) كسلسلة
إذا (رقم التعديل 2 <> 0) ثم
العودة "غريبة"
آخر
العودة "حتى"
نهاية إذا
وظيفة النهاية
<قالب العنصر>
قيمة الرقم: <%# Container.DataItem %>
زوجي/فردي: <%# EvenOrOdd(Container.DataItem) %>
</قالب العنصر>
</asp:قائمة البيانات>
يوفر مكون ASP.NET Page Framework طريقة ثابتة تقوم بتقييم تعبير ربط البيانات المتأخر وتنسيق النتيجة كسلسلة بشكل اختياري. في هذه الحالة، يعد DataBinder.Eval مناسبًا لأنه يلغي الكثير من أعمال التحويل الصريحة التي يجب على المطور تنفيذها لتحويل التقدير إلى نوع البيانات المطلوب. وهو مفيد بشكل خاص عندما تكون هناك عناصر تحكم مرتبطة بالبيانات في قائمة مقولبة، لأنه في هذه الحالة يجب عادةً تحويل كل من صفوف البيانات وحقول البيانات.
ألقِ نظرة على المثال التالي، الذي يحتاج إلى عرض عدد صحيح كسلسلة عملة. في بناء جملة ربط بيانات ASP.NET القياسي، يجب عليك أولاً تحويل نوع صف البيانات لاسترداد حقل البيانات IntegerValue. ثم قم بتمريرها كمعلمة إلى أسلوب String.Format.
<%# String.Format("{0:c}", (CType(Container.DataItem, DataRowView)("IntegerValue"))) %>
بناء الجملة هذا معقد للغاية وليس من السهل تذكره. في المقابل، DataBinder.Eval هو أسلوب بسيط يحتوي على ثلاث معلمات فقط: حاوية تسمية عنصر البيانات، واسم حقل البيانات، وسلسلة التنسيق. في عناصر التحكم المقولبة (مثل FormView أو GridView أو ديتايلز فيو أو داتاليست أو ريبيتر)، تكون الحاوية المسماة Container.DataItem. الصفحة عبارة عن حاوية مسماة أخرى يمكن استخدامها أيضًا لـ DataBinder.Eval. كما ذكرنا سابقًا، يوفر ASP.NET 2.0 بناء جملة مبسطًا جديدًا (Eval) لـ DataBinder.Eval، والذي يمكنك استخدامه في قوالب التحكم المرتبطة بالبيانات لتحليل Container.DataItem تلقائيًا.
<%# DataBinder.Eval(Container.DataItem, "IntegerValue", "{0:c}") %>
<%# Eval("IntegerValue", "{0:c}") %>
معلمة سلسلة التنسيق اختيارية. إذا تم حذف هذه المعلمة، فسوف يقوم DataBinder.Eval بإرجاع قيمة نوع الكائن، كما هو موضح أدناه:
<%# CType(DataBinder.Eval(Container.DataItem, "BoolValue"), Boolean) %> ما
يجب أن ننتبه إليه هو أن ، مع المعيار مقارنة ببناء جملة ربط البيانات، سيؤثر DataBinder.Eval بشكل كبير على الأداء لأنه يستخدم انعكاس الربط البطيء. الرجاء استخدام DataBinder.Eval بحكمة، خاصة إذا لم تكن بحاجة إلى تنسيق السلسلة.