我有一个包含 2 个数据分页器和 1 个列表视图的页面。我正在尝试以编程方式设置页面大小,它适用于第一页,但之后就不行了。如果我将页面大小硬编码为 12,它可以正常工作。
数据分页器使用“页面”的查询字符串参数。我还将会话“PerPage”设置为 int 值,例如 12、24、48 等,以控制每页显示的数量,但这也不起作用。不执行回发,因为这一切都是通过 ?page=3 查询字符串参数完成的。
提前致谢!
这是我的代码:
<asp:DataPager ID="DPTop" runat="server" QueryStringField="page" PagedControlID="resultsLV"
OnPreRender="DPTopPreRender">
<Fields>
<asp:NextPreviousPagerField FirstPageText="<<" ShowFirstPageButton="True" ShowNextPageButton="False" />
<asp:NumericPagerField />
<asp:NextPreviousPagerField LastPageText=">>" ShowLastPageButton="True" ShowPreviousPageButton="False" />
</Fields>
</asp:DataPager>
列表视图
<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
}
}