我有一个包含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="<<" ShowFirstPageButton="True" ShowNextPageButton="False" />
<asp:NumericPagerField />
<asp:NextPreviousPagerField LastPageText=">>" 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
}
}
答案 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;
}