簡體   English   中英

每頁項目,asp.net 3.5,c#,GridView

[英]items per page, asp.net 3.5, c#, GridView

我正在嘗試擴展Gridview的Paging屬性,以允許用戶通過單擊相應的文本鏈接來選擇他們希望每頁查看多少個項目; 即25 | 50 | 75 | 100. page屬性在后面的代碼中設置為:

    /// <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屬性。

謝謝。 任何幫助將不勝感激。

首先,由於您正在執行相同的操作,因此您只是在使用不同的參數(頁面大小),因此我將創建一個事件來處理它,並讓所有LinkBut​​tons都使用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();        
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM