ASP.NET - تحكم DataList

تحكم DataList، مشابه للنوع Repeater، يستخدم لعرض قائمة تكرار للمشاريع المحددة من قبل هذا التحكم. ولكن، يضيف التحكم DataList بشكل افتراضي جدولًا على مشاريع البيانات.

ربط DataSet بتحكم DataList

النوع DataList، مشابه للنوع Repeater، يستخدم لعرض قائمة تكرار للمشاريع المحددة من قبل هذا التحكم. ولكن، يضيف التحكم DataList بشكل افتراضي جدولًا على مشاريع البيانات. يمكن ربط التحكم DataList بجداول قاعدة البيانات أو ملفات XML أو قوائم مشاريع أخرى. هنا، سنعرض كيفية ربط ملف XML بتحكم DataList.

نحن سنستخدم ملف 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 عند تشغيل الصفحة لأول مرة:

<script runat="server">
sub Page_Load
if Not Page.IsPostBack then
  dim mycdcatalog=New DataSet
  mycdcatalog.ReadXml(MapPath("cdcatalog.xml"))
end if
end sub

ثم نحن ننشئ عنصر DataList في صفحة .aspx. محتوى عناصر <HeaderTemplate> يظهر مرة واحدة في الناتج، بينما يظهر محتوى عناصر <ItemTemplate> مرة واحدة لكل "record" في DataSet، وأخيرًا، يظهر محتوى <FooterTemplate> مرة واحدة في الناتج:

<html>
<body>
<form runat="server">
<asp:DataList id="cdcatalog" runat="server">
<HeaderTemplate>
...
</HeaderTemplate>
<ItemTemplate>
...
</ItemTemplate>
<FooterTemplate>
...
</FooterTemplate>
</asp:DataList>
</form>
</body>
</html>

ثم نضيف سكريبت يمكن إنشاء DataSet، ونقوم بتحديد mycdcatalog DataSet لهذا عنصر DataList. نستخدم أيضًا هذه العناصر لملء عنصر DataList: <HeaderTemplate> الذي يحتوي على العناوين، <ItemTemplate> الذي يحتوي على البيانات التي يتم عرضها، و<FooterTemplate> الذي يحتوي على النصوص. يرجى ملاحظة أن خاصية gridlines لعنصر DataList تم تعيينها إلى "both" لعرض حواف الجدول:

<%@ 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()
end if
end sub
</script>
<html>
<body>
<form runat="server">
<asp:DataList id="cdcatalog"
gridlines="both" runat="server">
<HeaderTemplate>
مجلة CD الخاصة بي
</HeaderTemplate>
<ItemTemplate>
"<%#Container.DataItem("title")%>" من
<%#Container.DataItem("artist")%> -
$<%#Container.DataItem("price")%>
</ItemTemplate>
<FooterTemplate>
حقوق النشر codew3c.com
</FooterTemplate>
</asp:DataList>
</form>
</body>
</html>

اعرض هذا المثال

استخدام الأنماط

يمكنك أيضًا إضافة أنماط إلى عنصر DataList لجعله أكثر جاذبية:

<%@ 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()
end if
end sub
</script>
<html>
<body>
<form runat="server">
<asp:DataList id="cdcatalog"
runat="server"
cellpadding="2"
cellspacing="2"
borderstyle="inset"
backcolor="#e8e8e8"
width="100%"
headerstyle-font-name="Verdana"
headerstyle-font-size="12pt"
headerstyle-horizontalalign="center"
headerstyle-font-bold="true"
itemstyle-backcolor="#778899"
itemstyle-forecolor="#ffffff"
footerstyle-font-size="9pt"
footerstyle-font-italic="true"
<HeaderTemplate>
مجلة CD الخاصة بي
</HeaderTemplate>
<ItemTemplate>
"<%#Container.DataItem("title")%>" من
<%#Container.DataItem("artist")%> -
$<%#Container.DataItem("price")%>
</ItemTemplate>
<FooterTemplate>
حقوق النشر codew3c.com
</FooterTemplate>
</asp:DataList>
</form>
</body>
</html>

اعرض هذا المثال

استخدام <AlternatingItemTemplate>

يمكنك إضافة عنصر <AlternatingItemTemplate> بعد عنصر <ItemTemplate> لكي يمكنك وصف مظهر الصفوف المتناوبة. يمكنك تطبيق أنماط على جزء <AlternatingItemTemplate> داخل عنصر DataList:

<%@ 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()
end if
end sub
</script>
<html>
<body>
<form runat="server">
<asp:DataList id="cdcatalog"
runat="server"
cellpadding="2"
cellspacing="2"
borderstyle="inset"
backcolor="#e8e8e8"
width="100%"
headerstyle-font-name="Verdana"
headerstyle-font-size="12pt"
headerstyle-horizontalalign="center"
headerstyle-font-bold="True"
itemstyle-backcolor="#778899"
itemstyle-forecolor="#ffffff"
alternatingitemstyle-backcolor="#e8e8e8"
alternatingitemstyle-forecolor="#000000"
footerstyle-font-size="9pt"
footerstyle-font-italic="True">
<HeaderTemplate>
مجلة CD الخاصة بي
</HeaderTemplate>
<ItemTemplate>
"<%#Container.DataItem("title")%>" من
<%#Container.DataItem("artist")%> -
$<%#Container.DataItem("price")%>
</ItemTemplate>
<AlternatingItemTemplate>
"<%#Container.DataItem("title")%>" من
<%#Container.DataItem("artist")%> -
$<%#Container.DataItem("price")%>
</AlternatingItemTemplate>
<FooterTemplate>
© codew3c.com
</FooterTemplate>
</asp:DataList>
</form>
</body>
</html>

اعرض هذا المثال