0

GridviewのPagingプロパティを拡張して、ユーザーがそれぞれのテキストリンクをクリックして、ページごとに表示するアイテムの数を選択できるようにしようとしています。つまり、25 | 50 | 75 | 100.ページプロパティは、コードビハインドで次のように設定されます。

    /// <summary>
    /// Gets or sets the number of items displayed on a result page.
    /// </summary>
    #region  PageSize;
    [Bindable(true),
    Category("Paging"),
    Description("Paging Size"),
    NotifyParentProperty(true)]
    public virtual int PageSize
    {
        get
        {
            return (ViewState["PageSize"] == null) ? 25 : (int)ViewState["PageSize"];
        }

        set
        {
            //return ((int)ViewState["LastPage"]);
            ViewState["PageSize"] = value;
        }
     }

イベントは次のとおりです。

    /// <exclude/>
    /// <summary>
    /// Click event on '25' paging text link
    /// </summary>
    /// <param name="sender">Sender</param>
    /// <param name="e">EventArgs</param>
    protected virtual void PageSize25_Click(object sender, EventArgs e)
    {
        // ToDo: Pass new page size 25 to click event
        // Bind data to new page size
        // ViewState["PageSize"] = 25;
    }

    /// <exclude/>
    /// <summary>
    /// Click event on '50' paging text link
    /// </summary>
    /// <param name="sender">Sender</param>
    /// <param name="e">EventArgs</param>
    protected virtual void PageSize50_Click(object sender, EventArgs e)
    {
        // ToDo: Pass new page size 50 to click event
        // Bind data to new page size 
        // ViewState["PageSize"] = 50;
    }

    /// <exclude/>
    /// <summary>
    /// Click event on '75' paging text link
    /// </summary>
    /// <param name="sender">Sender</param>
    /// <param name="e">EventArgs</param>
    protected virtual void PageSize75_Click(object sender, EventArgs e)
    {
        // ToDo: Pass new page size 75 to click event
        // Bind data to new page size            

    }

    /// <exclude/>
    /// <summary>
    /// Click event on '100' paging text link
    /// </summary>
    /// <param name="sender">Sender</param>
    /// <param name="e">EventArgs</param>
    protected virtual void PageSize100_Click(object sender, EventArgs e)
    {
        // ToDo: Pass new page size 100 to click event
        // Bind data to new page size     

    }

どういうわけか、各テキストリンクの値(25 | 50 | 75 | 100)をPageSizeプロパティに渡す必要があります。

ありがとう。どんな助けでも大歓迎です。

4

1 に答える 1

1

まず、同じことをしているので、異なるパラメーター(ページサイズ)を使用しているだけです。それを処理する単一のイベントを作成し、すべてのLinkBut​​tonにCommandArgumentセットを使用してそのイベントを呼び出させます。

HTML側:

<asp:LinkButton ID="lnkPageSize75" runat="server" CommandArgument="75" Text="75" OnClick="PageSize_Click" />

コードビハインド:

protected virtual void PageSize_Click(object sender, EventArgs e)
{
    LinkButton lnk = (LinkButton)sender;
    ViewState["PageSize"] = Convert.ToInt32(lnk.CommandArgument);

    BindGridView();        
}

private void BindGridView()
{
    // Treat as psuedo-code. May take some tweaking with casting.
    myGridView.PageSize = ViewState["PageSize"]; 
    MyDataType data = MyDataLayer.GetData();
    myGridView.DataBind();        
}
于 2012-07-16T13:05:57.900 に答える