2 つのデータページャーと 1 つのリストビューを含むページがあります。プログラムでページサイズを設定しようとしていますが、最初のページでは機能しますが、それ以降は機能しません。ページサイズを 12 にハードコーディングすると、正常に動作します。
データページャーは、'page' のクエリ文字列パラメーターを使用します。また、セッション「PerPage」を12、24、48などのint値に設定して、ページごとに表示される量を制御しましたが、これも機能しません。?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
}
}