- .NET Web高級開發
- 羅江華 朱永光編著
- 1016字
- 2018-12-29 13:19:41
1.2.5 ListView控件和DataPager控件
ListView可以看成是DataGrid和Repeater的結合體,它既有Repeater控件的開放式模板,又具有DataGrid控件的編輯特性,基于這點,也一定能引起您的興趣吧。它提供了比DataGird豐富得多的布局手段,同時還具有DataGrid的所有特性。但是ListView控件本身并不提供分頁功能,需要通過另外一個分頁控件來協助完成整體功能:DataPager控件,ASP.NET 3.5中專門的分頁控件。之所以會把這個分頁功能單獨提出來,其用意就是方便其他可能需要分頁功能的控件使用。也可以理解為DataPager就是一個擴展ListView分頁功能的控件。和其他數據源控件一樣,ListView也是用來顯示數據的,它的使用類似于Repeater控件。在ListView控件中包含很多模板以方便使用,比如:InsertItemTemplate是用于添加記錄的(在DataGird中沒有這個模板), LayoutTemplate是ListView的一個布局模板,它用來決定包裹著詳細內容的容器的標記??梢愿鶕枰诓季帜0鍍确胖萌魏慰丶?,但前提是它必須是服務端控件。在使用ListView控件的時候,還需要指定ListView控件的ItemContainerID屬性,它用來告知ListView在哪個容器下顯示詳細內容。
參考如下示例:
<asp:ListView ID="ListView1" runat="server" DataSourceID="SqlDataSource1" ItemContainerID="layoutTableTemplate"> <LayoutTemplate> <div> <table cellpadding="5"> <thead> <tr> <th> Title</th> <th> BirthDate</th> </tr> </thead> <tbody id="layoutTableTemplate" runat="server"> </tbody> </table> </div> </LayoutTemplate> <ItemTemplate> <tr> <td valign="top"> <%# Eval("Title") %></td> <td valign="top"> <%# Eval("BirthDate") %></td> </tr> </ItemTemplate> </asp:ListView> <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString2 %>" SelectCommand="SELECT [Title], [BirthDate] FROM [Employees] ORDER BY [BirthDate]"> </asp:SqlDataSource>
該例使用<table/>來做ListView顯示的詳細內容的容器,并且它還有一個固定表頭的功能。請注意上面的布局模板,特別是其中的<TBODY/>部分。ItemTemplate會將其內生成的詳細內容插入到<TBODY/>之中。
當然如果你想為ListView增加分頁功能的話,那么就需要使用DataPager控件了。前面講過,這個分頁控件是一個獨立的控件,可以把它放到頁面的任何位置,然后使其關聯到你的ListView控件就可以完成分頁的工作。該分頁控件所呈現出來的HTML標記為內聯(Inline)元素,所以如果需要精確地設置其位置的話,可以參考下面的代碼,為其包裹一個<div/>標記。
<div > <asp:DataPager ID="PagerDemo" runat="server" PagedControlID=" ListView1" PageSize="5"> <Fields> <asp:NumericPagerField ButtonCount="10" NextPageText="" Previous PageText="" /> <asp:NextPreviousPagerField FirstPageText="First" LastPageText= "Last" NextPageText="Next" PreviousPageText="Previous" /> </Fields> </asp:DataPager> </div>
通過這段代碼會發現,可以通過設置DataPager控件的Fields,從而達到手動設置分頁布局的目的。另外還有一個關鍵點,就是DataPager控件的PagedControlID屬性,需要把它設置為ListView的ID。當然也可以把DataPager控件放到布局模板內。把分頁功能作為一個單獨的控件分離出來是一個非常好的習慣,它會讓我們有更多的布局和顯示上的自由度。但是,目前的分頁控件還是有其局限性的。其缺點是它只能結合ListView控件一起工作,目前還不支持在Repeater或GridView上的分頁功能。另外它也是依賴于ViewState的,沒有分頁事件,也沒有SelectedPageIndex屬性。還有一點需要注意的是,ListView沒有內置排序功能。
- Mastering Proxmox(Third Edition)
- Splunk 7 Essentials(Third Edition)
- 中文版Photoshop CS5數碼照片處理完全自學一本通
- Mastering Elastic Stack
- 計算機網絡技術實訓
- Data Wrangling with Python
- 機器人創新實訓教程
- CentOS 8 Essentials
- Excel 2007技巧大全
- 網中之我:何明升網絡社會論稿
- HTML5 Canvas Cookbook
- Azure PowerShell Quick Start Guide
- Photoshop行業應用基礎
- INSTANT Munin Plugin Starter
- 網絡脆弱性掃描產品原理及應用