深入研究 Repeater

作者: lovko  來源: 博客園  發布時間: 2009-08-26 10:24  閱讀: 6245 次  推薦: 2   原文鏈接   [收藏]  
摘要:本文介紹ASP.NET數據控件中的Repeater控件,Repeater的具有很高的靈活性

在所有這三個數據 Web 控件中,Repeater Web 控件在呈現的 HTML 里提供了最大的靈活性。 DataGrid 或 DataList 會在預設的 HTML 標記中自動包含開發人員指定的內容。與它們不同的是,Repeater 在呈現的時候將嚴格生成指定的 HTML 標記。 因此,如果不想用 HTML的table或者一系列span,標記顯示數據,而希望以其他方式顯示數據,就必須使用Repeater 控件。

就像 DataList 一樣,使用 Repeater 時要用模板指定標記。 Repeater 包含下列五個模板:

AlternatingItemTemplate
FooterTemplate
HeaderTemplate
ItemTemplate
SeparatorTemplate

HeaderTemplate 和 FooterTemplate 指定出現在綁定到 Repeater 的數據之前和之后的 HTML 標記。 AlternatingItemTemplate 和 ItemTemplate 指定用于呈現 Repeater 的DataSource中的每條記錄的 HTML 標記和數據綁定語法。 例如,假設您要把包含雇員信息的數據集綁定到 Repeater,該數據集的其中一個字段是EmployeeName。如果要在 Web 頁上以無序列表的形式顯示雇員列表,則可以使用如下 Repeater 語法:

<asp:Repeater runat="server" id="rptEmployees">
<HeaderTemplate>
<ul>
</HeaderTemplate>
<ItemTemplate>
<li><%# DataBinder.Eval(Container.DataItem, "EmployeeName") %></li>
</ItemTemplate>
<FooterTemplate>
</ul>
</FooterTemplate>
</asp:Repeater>

與 DataGrid 和 DataList 不同,Repeater 類不是從WebControl類派生的。 因此,Repeater 缺少 DataGrid 和 DataList 二者共有的樣式屬性。 這一點歸結起來無非是說,如果想對 Repeater 中所顯示數據進行格式設置,則必須在 HTML 標記中進行這樣的操作。 例如,在上面的例子中,如果想用粗體顯示雇員的姓名,則必須更改 ItemTemplate 以包含 HTML 粗體標記,就像下面這樣:

 

<ItemTemplate>
<li><b><%# DataBinder.Eval(Container.DataItem, "EmployeeName")
%></b></li>
</ItemTemplate>

然而對于 DataGrid 或 DataList,通過把控件的ItemStyle-Font-Bold屬性設置為 True,就能用粗體顯示文本了。Repeater 缺少樣式屬性會大大增加開發的時間指標。 例如,假設決定使用 Repeater 顯示數據,這些數據需要以粗體、中間對齊且帶有特定背景色的特定字體顯示。 所有這些都要用幾個 HTML 標記指定,這些標記很快就會使 Repeater 的模板變得凌亂不堪。 這種凌亂會使以后對外觀進行更改變得困難得多,尤其是當其他人對該項目進行操作時,則不得不查看大量 HTML 語法。 將這一點與為 DataGrid 或 DataList 指定格式進行比較。 對于這兩個控件中的任何一個,都可以通過指定 DataGrid 或 DataList 的樣式屬性來使模板免于凌亂。 此外,可以用一些工具來自動設置 DataGrid 和 DataList 的樣式屬性,例如 Microsoft Visual Studio .NET 或 ASP.NET Web Matrix。

 

 

除了延長開發時間之外,Repeater 還缺少有助于支持分頁、編輯或數據編輯的內置功能。 由于缺少這些功能支持,Repeater 在可用性的評定中得分很低。 當然,如果所有您感興趣的只是顯示數據,而不用帶任何別致的鈴聲或口哨聲,那么 Repeater 的功能匱乏就不是主要缺點了。 我之所以強調“如果”一詞是因為,通常,Web 應用程序一旦進行了部署,用戶就會發現他們需要附加的功能,例如排序、分頁和編輯。

Repeater 有一個彌補性的品質(這并不令人吃驚),那就是性能。 Repeater 的性能比 DataList 的性能稍微好一點,比 DataGrid 的性能要好很多。圖 3 顯示了Repeater 每秒能處理的請求數,并與 DataGrid 和 DataList 進行了對比。

 

2
0
 
標簽:ASP.NET Repeater
 
 

文章列表

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()