نماذج ويب ASP.NET - التحكم في المكرر
عنصر التحكم ASP.NETRepeater هو عنصر التحكم الأصلي في ربط البيانات. يقدم هذا القسم استخدام عنصر التحكم Repeater في عمليات ربط بيانات ASP.NET.
يتم استخدام عنصر التحكم Repeater لعرض قائمة متكررة من العناصر المرتبطة بعنصر التحكم.
ربط DataSet إلى عنصر التحكم Repeater
يتم استخدام عنصر التحكم Repeater لعرض قائمة متكررة من العناصر المرتبطة بعنصر التحكم. يمكن ربط عناصر التحكم المكررة بجداول قاعدة البيانات أو ملفات XML أو قوائم العناصر الأخرى. سنوضح هنا كيفية ربط ملف XML بعنصر تحكم مكرر.
في مثالنا، سوف نستخدم ملف XML التالي ("cdcatalog.xml"):
<?xml version="1.0" encoding="ISO-8859-1"?> <catalog> <cd> <title>Empire Burlesque</title> <artist>بوب ديلان</artist> <country>الولايات المتحدة الأمريكية</country > <company>كولومبيا</company> <price>10.90</price> <year>1985</year> </cd> <cd> <title>أخفي قلبك</title> <artist>بوني تايلر</فنان> <country>المملكة المتحدة</country> <company>سجلات CBS</company> <price>9.90</price> <year>1988</year> </cd> <cd> <title>أعظم الفعاليات </title> <artist>دوللي بارتون</artist> <country>الولايات المتحدة الأمريكية</country> <company>RCA</company> <price>9.90</price> <year>1982</year> </cd> <cd> <title>لا يزال هناك موسيقى البلوز</title> <artist>غاري مور</artist> <country>المملكة المتحدة</country> <company>سجلات العذراء</company> <price>10.20</price> <year >1990</year> </cd> <cd> <title>إيروس</title> <artist>إيروس رامازوتي</artist> <country>الاتحاد الأوروبي</country> <company>BMG</company> <السعر>9.90</price> <year>1997</year> </cd> </catalog>عرض ملف XML هذا: cdcatalog.xml
أولاً، قم باستيراد مساحة الاسم "System.Data". نحن بحاجة إلى مساحة الاسم هذه للعمل مع كائنات DataSet. قم بتضمين التوجيه التالي في أعلى صفحة .aspx الخاصة بك:
<%@ استيراد مساحة الاسم = "System.Data" %>بعد ذلك، قم بإنشاء DataSet لملف XML وقم بتحميل ملف XML إلى DataSet عند تحميل الصفحة لأول مرة:
<script runat="server"> sub Page_Load إذا لم يكن Page.IsPostBack ثم قم بتعتيم mycdcatalog=New DataSet mycdcatalog.ReadXml(MapPath("cdcatalog.xml")) ينتهي إذا انتهى subثم نقوم بإنشاء عنصر تحكم مكرر في صفحة .aspx. يتم عرض المحتوى الموجود في عنصر <HeaderTemplate> أولاً ويظهر مرة واحدة فقط في الإخراج، بينما يتم تكرار المحتوى الموجود في عنصر <ItemTemplate> لكل "سجل" في DataSet، وأخيرًا، يتم إعادة المحتوى الموجود في عنصر <FooterTemplate> يظهر مرة واحدة فقط في الإخراج:
<html> <body> <form runat="server"> <asp:Repeater id="cdcatalog" runat="server"> <HeaderTemplate> ... </HeaderTemplate> <ItemTemplate> ... </ItemTemplate> < FooterTemplate> ... </FooterTemplate> </asp:Repeater> </form> </body> </html>ثم نقوم بإضافة البرنامج النصي لإنشاء DataSet وربط mycdcatalog DataSet بعنصر التحكم Repeater. ثم استخدم علامات HTML لملء عنصر التحكم Repeater، وربط عناصر البيانات بالخلايا الموجودة في منطقة <ItemTemplate> من خلال <%#Container.DataItem("fieldname")%>:
مثال
<%@ Import Namespace="System.Data" %> <script runat="server"> sub Page_Load إذا لم يكن Page.IsPostBack ثم قم بتعتيم mycdcatalog=New DataSet mycdcatalog.ReadXml(MapPath("cdcatalog.xml")) cdcatalog.DataSource =mycdcatalog cdcatalog.DataBind() end if end sub </script> <html> <body> <form runat = "server"> <asp:Repeater id = "cdcatalog" runat = "server"> <HeaderTemplate> <table> <tr> <th>العنوان</th> <th>الفنان</th> <th>البلد </th> <th>الشركة</th> <th>السعر</th> <th>العام</th> </tr> </HeaderTemplate> <ItemTemplate> <tr> <td><%#Container.DataItem("title")%></td> <td><%#Container.DataItem("artist")%></td> <td><%#Container.DataItem( "country")%></td> <td><%#Container.DataItem("company")%></td> <td><%#Container.DataItem("price")%></td> <td><%#Container.DataItem("year")%></td> </tr> </ItemTemplate> <FooterTemplate > </table> </FooterTemplate> </asp:Repeater> </form> </body> </html>نصيحة: للحصول على معلومات حول علامات HTML، يمكنك الرجوع إلى "دليل HTML المرجعي" لهذا الموقع!
استخدم <AlternatingItemTemplate>
يمكنك إضافة عنصر <AlternatingItemTemplate> بعد عنصر <ItemTemplate> لوصف مظهر الصفوف البديلة في الإخراج. في المثال أدناه، يتم عرض كل صف آخر من الجدول بخلفية رمادية فاتحة:
مثال
<%@ Import Namespace="System.Data" %> <script runat="server"> sub Page_Load إذا لم يكن Page.IsPostBack ثم قم بتعتيم mycdcatalog=New DataSet mycdcatalog.ReadXml(MapPath("cdcatalog.xml")) cdcatalog.DataSource =mycdcatalog cdcatalog.DataBind() end if end sub </script> <html> <body> <form runat = "server"> <asp:Repeater id = "cdcatalog" runat = "server"> <HeaderTemplate> <table> <tr> <th>العنوان</th> <th>الفنان</th> <th>البلد </th> <th>الشركة</th> <th>السعر</th> <th>العام</th> </tr> </HeaderTemplate> <ItemTemplate> <tr> <td><%#Container.DataItem("title")%></td> <td><%#Container.DataItem("artist")%></td> <td><%#Container.DataItem( "country")%></td> <td><%#Container.DataItem("company")%></td> <td><%#Container.DataItem("price")%></td> <td><%#Container.DataItem("year")%></td> </tr> </ItemTemplate> <AlternatingItemTemplate > <tr bgcolor="#e8e8e8"> <td><%#Container.DataItem("title")%></td> <td><%#Container.DataItem("artist")%></td> <td><%#Container.DataItem("country")%></td> <td><%#Container.DataItem( "company")%></td> <td><%#Container.DataItem("price")%></td> <td><%#Container.DataItem("year")%></td> </tr> </AlternatingItemTemplate> <FooterTemplate> </table> </FooterTemplate> </asp:Repeater> </form> < / الجسم> </html>استخدم <SeparatorTemplate>
يتم استخدام عنصر <SeparatorTemplate> لوصف الفاصل بين كل سجل. في المثال أدناه، يتم إدراج خط أفقي بين كل صف في الجدول:
مثال
<%@ Import Namespace="System.Data" %> <script runat="server"> sub Page_Load إذا لم يكن Page.IsPostBack ثم قم بتعتيم mycdcatalog=New DataSet mycdcatalog.ReadXml(MapPath("cdcatalog.xml")) cdcatalog.DataSource =mycdcatalog cdcatalog.DataBind() end if end sub </script> <html> <body> <form runat = "server"> <asp:Repeater id = "cdcatalog" runat = "server"> <HeaderTemplate> <table> <tr> <th>العنوان</th> <th>الفنان</th> <th>البلد </th> <th>الشركة</th> <th>السعر</th> <th>العام</th> </tr> </HeaderTemplate> <ItemTemplate> <tr> <td><%#Container.DataItem("title")%></td> <td><%#Container.DataItem("artist")%></td> <td><%#Container.DataItem( "country")%></td> <td><%#Container.DataItem("company")%></td> <td><%#Container.DataItem("price")%></td> <td><%#Container.DataItem("year")%></td> </tr> </ItemTemplate> <SeparatorTemplate > <tr> <td colspan="6"><hr /></td> </tr> </SeparatorTemplate> <FooterTemplate> </table> </FooterTemplate> </asp:Repeater> </form> </body> </html>ما ورد أعلاه هو مقدمة لاستخدام عنصر التحكم ASP.NETRepeater.