0

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="&lt;&lt;" ShowFirstPageButton="True" ShowNextPageButton="False" />
            <asp:NumericPagerField />
            <asp:NextPreviousPagerField LastPageText="&gt;&gt;" 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
       }
    }
4

1 に答える 1

1

DataPager Init イベントでデータページャーのページサイズを設定する必要があります。

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;
}
于 2013-05-23T16:17:56.683 に答える