奇怪的C#DataPager与ListView问题

时间:2012-10-14 11:14:40

标签: c# listview datapager

我有一个包含2个datapagers和1个​​listview的页面。我试图以编程方式设置pagesize,它适用于第一页,但不适用于此之后。如果我将pagesize硬编码为12,它就可以正常工作。

datapagers使用'page'的查询字符串参数。我还将会话“PerPage”设置为int值,例如12,24,48等,以控制每页显示的数量,但这也不起作用。没有执行回发,因为它们都是通过?page = 3 querystring param完成的。

提前致谢!

这是我的代码:

<asp:DataPager ID="DPTop" runat="server" QueryStringField="page" PagedControlID="resultsLV"
        OnPreRender="DPTopPreRender">
        <Fields>
            <asp:NextPreviousPagerField FirstPageText="&lt;&lt;" ShowFirstPageButton="True" ShowNextPageButton="False" />
            <asp:NumericPagerField />
            <asp:NextPreviousPagerField LastPageText="&gt;&gt;" ShowLastPageButton="True" ShowPreviousPageButton="False" />
        </Fields>
    </asp:DataPager>

Listview

<asp:ListView runat="server" ID="resultsLV" OnItemDataBound="resultsLV_ItemDataBound" OnPagePropertiesChanging="PagePropertiesChanging">
        <ItemTemplate>
            <div class="result" runat="server" id="resultItem">
            </div>
        </ItemTemplate>
</asp:ListView>

背后的代码:

protected void Page_Init(object sender, EventArgs e)
    {
        // Assign page size
        if (Session["PerPage"] != null && !IsPostBack)
        {
            DPTop.PageSize = Convert.ToInt32(Session["PerPage"]);
            DPBottom.PageSize = Convert.ToInt32(Session["PerPage"]);
        }
        else
        {
            DPTop.PageSize = 12;
            DPBottom.PageSize = 12;
        }
    }

 protected void Page_Load(object sender, EventArgs e)
    {
       if(!ispostback)
       {
          //bind the data
       }
    }

1 个答案:

答案 0 :(得分:1)

您必须在DataPager Init事件中设置datapager pagesize:

ASPX:

<asp:DataPager ID="DataPager1" runat="server" QueryStringField="pageNumber" 
                PagedControlID="lvItemList" OnPreRender="DataPager1_PreRender" OnInit="DataPager1_Init">

C#

protected void DataPager1_Init(object sender, EventArgs e)
{
    DataPager1.PageSize = 8;
}