新聞中心
DataList控件入門:呈現(xiàn)方式

成都創(chuàng)新互聯(lián)公司主打移動(dòng)網(wǎng)站、成都網(wǎng)站制作、成都做網(wǎng)站、網(wǎng)站改版、網(wǎng)絡(luò)推廣、網(wǎng)站維護(hù)、空間域名、等互聯(lián)網(wǎng)信息服務(wù),為各行業(yè)提供服務(wù)。在技術(shù)實(shí)力的保障下,我們?yōu)榭蛻舫兄Z穩(wěn)定,放心的服務(wù),根據(jù)網(wǎng)站的內(nèi)容與功能再?zèng)Q定采用什么樣的設(shè)計(jì)。最后,要實(shí)現(xiàn)符合網(wǎng)站需求的內(nèi)容、功能與設(shè)計(jì),我們還會(huì)規(guī)劃穩(wěn)定安全的技術(shù)方案做保障。
DataList控件和DataGrid控件類似,也是在ASP.NET中用于控制顯示數(shù)據(jù)的Web控件。要學(xué)習(xí)DataGrid控件,首先需要了解,DataGrid 將呈現(xiàn)為 HTML
< table>
,每一個(gè)
DataSource
記錄作為一個(gè)表行(
< tr>
),每一個(gè)記錄字段作為一個(gè)表列(
< td>
)。 有時(shí),您可能想更多地控制數(shù)據(jù)的顯示。 例如,您可能想把數(shù)據(jù)顯示在 HTML
< table>
中,但不是每行顯示一條記錄,而是每行顯示五條記錄。 或者,您根本不想把數(shù)據(jù)顯示在
< table>
標(biāo)記中,而是想把每個(gè)元素顯示在一個(gè)
< span>
標(biāo)記中。
DataList控件入門:與DataGrid之不同
DataList 放棄了 DataGrid 所采用的“列”概念。 相反,DataList 的顯示是通過(guò)模板 定義的。 利用模板,開(kāi)發(fā)人員可以指定混合的 HTML 語(yǔ)法和數(shù)據(jù)綁定語(yǔ)法。 HTML 語(yǔ)法是標(biāo)準(zhǔn)的 HTML 標(biāo)記;數(shù)據(jù)綁定語(yǔ)法是使用
< %#
和
%>
標(biāo)記分隔的,用于從
DataSource
的記錄中產(chǎn)生用于構(gòu)造給定 DataList 項(xiàng)的內(nèi)容。 例如,下面的 ItemTemplate 將顯示
DataSource
的字段
CompanyName:
- < asp:DataList runat="server" id="myDataList">
- < ItemTemplate>
- < %# DataBinder.Eval(Container.DataItem, "CompanyName") %>
- < /ItemTemplate>
- < /asp:DataList>
除了數(shù)據(jù)綁定語(yǔ)法,模板也可以包含 HTML 標(biāo)記。 通過(guò)更新上面的模板,可以使
CompanyName
字段以粗體顯示,而使
ContactName
字段以非粗體顯示在
CompanyName
字段的下面:
- < asp:DataList runat="server" id="myDataList">
- < ItemTemplate>
- < b>< %# DataBinder.Eval(Container.DataItem, "CompanyName") %>< /b>
- < br />
- < %# DataBinder.Eval(Container.DataItem, "ContactName") %>
- < /ItemTemplate>
- < /asp:DataList>
對(duì)于 DataList 的 DataSource 中的每一條記錄,都要計(jì)算 ItemTemplate 的數(shù)據(jù)綁定語(yǔ)法。 數(shù)據(jù)綁定語(yǔ)法的輸出與 HTML 標(biāo)記一起指定了為 DataList 項(xiàng)呈現(xiàn)的 HTML。 DataList 還支持其他六個(gè)模板,包括 ItemTemplate在內(nèi)共有如下七個(gè):
AlternatingItemTemplate
EditItemTemplate
FooterTemplate
HeaderTemplate
ItemTemplate
SelectedItemTemplate
SeparatorTemplate
注意,DataGrid 的 TemplateColumn 僅支持四個(gè)模板: ItemTemplate、HeaderTemplate、FooterTemplate 和 EditItemTemplate。
默認(rèn)情況下,DataList 將每一項(xiàng)都顯示為 HTML
< table>
中的一行。 但是,通過(guò)設(shè)置
RepeatColumns
屬性,您可以指定表的每一行顯示多少個(gè) DataList 項(xiàng)。 除了可以指定 HTML
< table>
的每一行顯示多少個(gè) DataList 項(xiàng)之外,還可以指定 DataList 的內(nèi)容應(yīng)該使用
< span>
標(biāo)記顯示,而不是使用
< table>
標(biāo)記。 DataList 的
RepeatLayout
屬性可以設(shè)置為 Table 或 Flow,表示 DataList 中的數(shù)據(jù)呈現(xiàn)在 HTML
< table>
中還是
< span>
標(biāo)記中。
利用模板以及
RepeatColumns
和
RepeatLayout
屬性,很明顯 DataList 比 DataGrid 允許對(duì)呈現(xiàn)的 HTML 標(biāo)記進(jìn)行更多的自定義。 這種增強(qiáng)了的自定義使得使用 DataList 能夠產(chǎn)生更為友好的數(shù)據(jù)顯示,因?yàn)?DataGrid 的“每一條
DataSource
記錄占用一個(gè)表行的單 HTML
< table>
”模型不可能總是用于顯示信息的***選擇。 但是,只研究比 DataGrid 改進(jìn)了的自定義并不足以確定 DataList 的可用性;我們還必須比較 DataGrid 和 DataList 的排序、分頁(yè)和編輯功能。
使用 EditItemIndex 模板以及 EditCommand、UpdateCommand 和 CancelCommand 事件,DataList 可以支持內(nèi)聯(lián)編輯。 但是,用 DataList 添加這樣的功能比用 DataGrid 花費(fèi)的開(kāi)發(fā)時(shí)間要長(zhǎng)。 開(kāi)發(fā)時(shí)間的差異是由于下面兩個(gè)原因:
通過(guò) EditCommandColumn 列類型即可在 DataGrid 中創(chuàng)建的編輯/更新/取消按鈕,必須手動(dòng)添加到 DataList 中,以及
DataGrid BoundColumn 列類型自動(dòng)使用 TextBox Web 控件作為編輯接口,而使用 DataList 時(shí)必須通過(guò) EditItemTemplate 為要編輯的項(xiàng)顯式指定的編輯接口。
雖然用 DataList 進(jìn)行內(nèi)聯(lián)編輯不是很困難,但是 DataList 的數(shù)據(jù)排序、分頁(yè)和編輯卻很困難。 雖然一些靈活的編碼肯定能完成這樣的功能,但是向 DataList 中添加這樣的功能將花費(fèi)相當(dāng)多的開(kāi)發(fā)時(shí)間。 因此,如果最終用戶能對(duì)數(shù)據(jù)進(jìn)行排序和分頁(yè)是一個(gè)必需要求的話,那么***選擇 DataGrid 而不選擇 DataList。
DataList控件入門:性能比較
DataList 的性能比 DataGrid 的性能好,當(dāng) DataList 位于 Web 窗體內(nèi)時(shí)這一點(diǎn)更明顯。 圖 2 顯示了 Web Application Stress Tool 在 DataList 上的測(cè)試結(jié)果。
圖 2: DataList 的每秒請(qǐng)求數(shù)
正如圖 2 中的結(jié)果顯示的那樣,當(dāng) DataList 放置在 Web 窗體內(nèi)時(shí)(因此導(dǎo)致該 Web 控件生成它的 ViewState),該 Web 控件要遠(yuǎn)勝于 DataGrid。
本文名稱:DataList控件入門介紹
文章起源:http://www.fisionsoft.com.cn/article/djpiohs.html


咨詢
建站咨詢
