官术网_书友最值得收藏!

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沒有內置排序功能。

主站蜘蛛池模板: 车致| 南澳县| SHOW| 罗源县| 内黄县| 泰安市| 杨浦区| 施甸县| 南投市| 临湘市| 通山县| 武乡县| 视频| 兴仁县| 泸溪县| 崇左市| 金乡县| 河曲县| 凉城县| 紫金县| 深州市| 武胜县| 平乐县| 西盟| 青岛市| 西安市| 新河县| 额尔古纳市| 安义县| 海门市| 江都市| 安化县| 四平市| 安吉县| 崇礼县| 武清区| 龙海市| 扎兰屯市| 岱山县| 常宁市| 金堂县|