每页的项目,asp.net 3.5,c#,GridView

时间:2012-07-16 12:56:11

标签: c# asp.net-3.5

我正在尝试扩展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属性。

感谢。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

首先,由于你正在做同样的事情,你只是使用不同的参数(页面大小),我会创建一个单独的事件来处理它并让你的所有LinkBut​​ton调用该事件CommandArgument set:

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();        
}