ASP.NET - مستطيل التكرار
- الصفحة السابقة ملفات XML WebForms
- الصفحة التالية قائمة DataList WebForms
مستطيل التكرار يتم استخدامه لعرض قائمة العناصر المتكررة، التي تقتصر على هذا المستطيل.
ربط DataSet بجهاز التكرار
مستطيل التكرار يتم استخدامه لعرض قائمة العناصر المتكررة، التي تقتصر على هذا المستطيل. يمكن ربط مستطيل التكرار بجدول البيانات أو ملف XML أو قائمة عناصر أخرى. هنا، سنعرض كيفية ربط ملف XML إلى مستطيل التكرار.
سنستخدم في هذا المثال ملف XML التالي ("cdcatalog.xml"):
<?xml version="1.0" encoding="ISO-8859-1"?> <catalog> <cd> <title>Empire Burlesque</title> <artist>Bob Dylan</artist> <country>USA</country> <company>Columbia</company> <price>10.90</price> <year>1985</year> </cd> <cd> <title>Hide your heart</title> <artist>Bonnie Tyler</artist> <country>UK</country> <company>CBS Records</company> <price>9.90</price> <year>1988</year> </cd> <cd> <title>Greatest Hits</title> <artist>Dolly Parton</artist> <country>USA</country> <company>RCA</company> <price>9.90</price> <year>1982</year> </cd> <cd> <title>Still got the blues</title> <artist>Gary Moore</artist> <country>UK</country> <company>Virgin records</company> <price>10.20</price> <year>1990</year> </cd> <cd> <title>Eros</title> <artist>Eros Ramazzotti</artist> <country>EU</country> <company>BMG</company> <price>9.90</price> <year>1997</year> </cd> </catalog>
يرجى الرجوع إلى هذا ملف XML:cdcatalog.xml
أولاً، قم بتعريف مساحة الأسماء "System.Data". نحتاج إلى هذه المساحة للعمل مع كائن DataSet. في الجزء العلوي من صفحة .aspx، تحتوي على التعليمات التالية:
<%@ Import Namespace="System.Data" %>
ثم قم بإنشاء Dataset لهذا الملف XML، واقم بتحميل هذا الملف XML إلى Dataset عند تشغيل الصفحة لأول مرة:
<script runat="server"> sub Page_Load if Not Page.IsPostBack then dim mycdcatalog=New DataSet mycdcatalog.ReadXml(MapPath("cdcatalog.xml")) fin if fin sub
ثم نقوم بإنشاء عنصر Repeater في صفحة .aspx. يتم عرض محتوى علامة <HeaderTemplate> مرة واحدة فقط في الناتج، بينما يتم عرض محتوى علامة <ItemTemplate> بشكل متكرر للسجلات في Dataset "record"، وأخيرًا يتم عرض محتوى علامة <FooterTemplate> مرة واحدة فقط في الناتج:
<html> <body> <form runat="server"> <asp:Repeater id="cdcatalog" runat="server"> <HeaderTemplate> ... </HeaderTemplate> <ItemTemplate> ... </ItemTemplate> <FooterTemplate> ... </FooterTemplate> </asp:Repeater> </form> </body> </html>
ثم نضيف سكريبت يمكن إنشاء Dataset، ونقوم بتحميل هذا Dataset المسمى mycdcatalog إلى عنصر Repeater، ونستخدم علامات HTML لملء عنصر Repeater، ونقوم بتحميل بيانات العنصر إلى جزء <ItemTemplate> باستخدام طريقة <%#Container.DataItem("fieldname")%>:
<%@ Import Namespace="System.Data" %> <script runat="server"> sub Page_Load if Not Page.IsPostBack then dim mycdcatalog=New DataSet mycdcatalog.ReadXml(MapPath("cdcatalog.xml")) cdcatalog.DataSource=mycdcatalog cdcatalog.DataBind() fin if fin sub </script> <html> <body> <form runat="server"> <asp:Repeater id="cdcatalog" runat="server"> <HeaderTemplate> <table border="1" width="100%"> <tr> <th>Title</th> <th>Artist</th> <th>Country</th> <th>Company</th> <th>Price</th> <th>Year</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>
استخدام <AlternatingItemTemplate>
يمكنك إضافة علامة <AlternatingItemTemplate> بعد علامة <ItemTemplate> لوصف مظهر السطور المتناوبة. في المثال التالي، سيتم عرض كل سطر في الجدول كخلفية رمادية خفيفة:
<%@ Import Namespace="System.Data" %> <script runat="server"> sub Page_Load if Not Page.IsPostBack then dim mycdcatalog=New DataSet mycdcatalog.ReadXml(MapPath("cdcatalog.xml")) cdcatalog.DataSource=mycdcatalog cdcatalog.DataBind() fin if fin sub </script> <html> <body> <form runat="server"> <asp:Repeater id="cdcatalog" runat="server"> <HeaderTemplate> <table border="1" width="100%"> <tr> <th>Title</th> <th>Artist</th> <th>Country</th> <th>Company</th> <th>Price</th> <th>Year</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> </body> </html>
استخدام <SeparatorTemplate>
النوعية <SeparatorTemplate> يمكن استخدامها لوصف علامة التباين بين كل سجل. في المثال التالي، يتم إدراج خط أفقي بين كل سطر في الجدول:
<%@ Import Namespace="System.Data" %> <script runat="server"> sub Page_Load if Not Page.IsPostBack then dim mycdcatalog=New DataSet mycdcatalog.ReadXml(MapPath("cdcatalog.xml")) cdcatalog.DataSource=mycdcatalog cdcatalog.DataBind() fin if fin sub </script> <html> <body> <form runat="server"> <asp:Repeater id="cdcatalog" runat="server"> <HeaderTemplate> <table border="0" width="100%"> <tr> <th>Title</th> <th>Artist</th> <th>Country</th> <th>Company</th> <th>Price</th> <th>Year</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>
- الصفحة السابقة ملفات XML WebForms
- الصفحة التالية قائمة DataList WebForms