如何手动设置ListView项的总数

时间:2012-11-02 12:51:12

标签: c# asp.net listview

我想在我的asp.net页面中实现分页功能。所以我为此制作了ListView和DatePager。

<div class="pagination">
                    <div class="numeric">
                    <asp:DataPager ID="resultListPager" runat="server"
                       PagedControlID="resultList">
                       <Fields>
                          <asp:NextPreviousPagerField ButtonType="Link" ShowNextPageButton="False" PreviousPageText="< Prev" />
                          <asp:NumericPagerField ButtonType="Link" NumericButtonCssClass="numericLink" />
                          <asp:NextPreviousPagerField ButtonType="Link" ShowPreviousPageButton="false" ShowNextPageButton="False" ShowLastPageButton="True" />
                          <asp:NextPreviousPagerField ButtonType="Link" ShowPreviousPageButton="false" NextPageText="Next >" />
                       </Fields>
                    </asp:DataPager>
                    </div>
                </div>

                <asp:ListView ID="resultList" runat="server" ItemPlaceholderID="itemPlaceholder" OnPagePropertiesChanging="ChangePage">

                <LayoutTemplate>
                <ul class="items_list5">
                    <asp:PlaceHolder ID="itemPlaceholder" runat="server" />
                </ul>
                </LayoutTemplate>

                <ItemTemplate>
                <li class="cat_item">
                <div class="item_image">
                                <a href="#"><img src="<%#Eval("Image")%>" alt="" /></a>
                            </div>
                            <div class="item_description">
                                <%#Eval("Name")%>
                            </div>
                </li>
                </ItemTemplate>

                <EmptyDataTemplate>
                <div>Sorry - no items found.</div>
                </EmptyDataTemplate>
                </asp:ListView>

问题在于,由于我只从数据库中获取前10个元素,因此分页只显示一个页面。

int totalCount;
List<GiftVoucher> vouchers = GiftVoucher.Search(querystring, pageNumber, count, out totalCount);
resultList.DataSource = vouchers;
resultList.DataBind();

例如,如果我的totalCount为50,我想用5页进行分页......现在它只显示一页,因为我只从数据库中获得前10条记录?

那么,如何手动将listview的总项目数设置为我的totalCount变量?

1 个答案:

答案 0 :(得分:0)

切换到ObjectDataSource并设置SelectMethod和SelectCountMethod。这样,列表不仅会获得当前页面,还会获得项目总数。