【问题标题】:Allow GridView sorting in Composite Control允许在复合控件中进行 GridView 排序
【发布时间】:2012-10-21 03:17:00
【问题描述】:

我不知道如何在我的复合控件中动态创建的 GridView 中启用排序。当然,我尝试将 GridView 的 AllowSorting 属性设置为“true”,但它不允许排序功能(标题中没有可以单击的链接按钮)。 AllowPaging 属性可以正常工作。

有什么办法解决这个问题吗?

protected override void OnInit(EventArgs e)
    {
        innerGridView.AutoGenerateColumns = false;
        innerGridView.AllowSorting = true;
        innerGridView.AllowPaging = true;
        innerGridView.PageSize = 2;

        base.OnInit(e);
    }

【问题讨论】:

  • 您的数据源是否有有效的 SortParameterName?
  • 是的,确实如此 - 当我将数据源绑定到页面上的其他 gridview(不在复合控件中)时,它可以正常工作。

标签: c# asp.net gridview composite-controls


【解决方案1】:

我认为唯一可见的问题是,GridView HeaderRow 中没有生成 LinkBut​​ton。所以我通过将 onclick 属性设置为 HeaderRow 中的每个单元格来绕过它。

protected override void Render(HtmlTextWriter writer)
    {
        if (innerGridView.HeaderRow != null)
        {
            for (int i = 0; i < innerGridView.HeaderRow.Cells.Count; i++)
            {
                innerGridView.HeaderRow.Cells[i].Attributes["onclick"] =
                    Page.ClientScript.GetPostBackClientHyperlink(innerGridView, "Sort$" + InnerGridViewDataTable.Columns[i].Caption, true);
            }
        }

        base.Render(writer);
    }

现在我可以点击标题和排序工作。当然,如果有人能提供更好的解决方案,我会很高兴。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-07-18
    • 1970-01-01
    • 2012-06-02
    • 2016-12-27
    • 2015-10-22
    • 1970-01-01
    • 2016-10-15
    • 1970-01-01
    相关资源
    最近更新 更多