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 را در زمان بارگذاری اولیه صفحه به DataSet بارگذاری کنید:

<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 ایجاد کند و این DataSet mycdcatalog را به کنترل 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>

شما می‌توانید علامت <ItemTemplate> را پس از علامت <AlternatingItemTemplate> اضافه کنید تا ظاهر ردیف‌های متناوب را توصیف کنید. شما می‌توانید بخش <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>

این مثال را نمایش دهید