0

ListViewを含むタブコントロールがあります。3つのタブがあり、各タブには同じListViewが含まれていますが、タブが変更されるたびにデータソースが変更されます。

3つのタブがあるとしましょう:Tab1:顧客Tab2:アイテムTab3:注文

DataPagerを使用すると問題が発生します。(へ1 2 3 4 5 6 ...次へ)DataPagerはQueryStringを使用します。

<asp:DataPager runat="server" ID="DataPager1" PagedControlID="ListView1" PageSize="5"     QueryStringField="page"  OnPreRender="Pager_PreRender" >
    <Fields>
        <asp:NextPreviousPagerField ButtonType="Button" PreviousPageText="Previous" />
        <asp:NumericPagerField ButtonType="Link" ButtonCount="10" />
        <asp:NextPreviousPagerField ButtonType="Button" NextPageText="Next" />
    </Fields>
</asp:DataPager>

これにより、次のURLが生成されます。

http:// localhost / MyProject / view / Customers?page = 1

Tab3:Ordersにいるとしましょう。次のページに移動すると、ポストバックが発生し、Tab1:Customersが代わりに表示されます。これは、URLがview / Customers?page = 1を示しているためです。 とにかく、を使用せずにページングを実現する方法はありますか。クエリ文字列?

ここで、QueryStringを使用します。

    protected void Pager_PreRender(object sender, EventArgs e)
    {
        int CurrentPage = 0;
        Int32.TryParse(Request.QueryString["page"], out CurrentPage);
        CurrentPage = CurrentPage.Equals(0) ? 1 : CurrentPage;

        HyperLink PreviousLink = DataPager1.Controls[0].Controls[0] as HyperLink;
        HyperLink NextLink = DataPager1.Controls[2].Controls[0] as HyperLink;
        if (PreviousLink != null)
        {
            if (CurrentPage.Equals(1))
            {
                PreviousLink.Visible = false;
            }
            else if (CurrentPage > 1)
            {
                PreviousLink.Visible = true;
            }
        }
        if (NextLink != null)
        {
            if ((CurrentPage * DataPager1.PageSize) >= DataPager1.TotalRowCount)
            {
                NextLink.Visible = false;
            }
            else
            {
                NextLink.Visible = true;
            }
        }
    }
4

1 に答える 1

0

PagingDataSet を使用し、HiddenField を使用してページ インデックスを格納できます。別の回答で説明したところ...

ページングを使用したカスタム データ テーブル

わかる?

于 2012-08-16T03:34:58.077 に答える