【问题标题】:how to enable sorting in gridview after change header text更改标题文本后如何在gridview中启用排序
【发布时间】:2013-03-18 04:42:04
【问题描述】:

我的网页中有一个 gridview 来显示我的查询结果

我编写了通过单击列标题进行排序的必要函数

但是当我在后面的代码中更改标题时,我无法通过单击进行排序

如何在绑定数据后将列格式从文本更改为超链接?

【问题讨论】:

  • 我想你在排序中提到过任何地方的标题...
  • 我建议你停止折磨自己,开始使用 jQuery/ajax/ & webmethods/webservices
  • 你可以添加一些代码..来纠正这个问题

标签: c# asp.net sorting gridview


【解决方案1】:

我也已经遇到过这个“错误”。技巧是避免在更改 Header 的 Text 值时将其转换为字符串(您可能在后面的代码中使用 e.Row.Cells[0].Text = "This is changed header 1" )。在此之后,所有更改的列都将禁用排序。所以,你需要把 header 不是文本,而是 LinkBut​​ton,一切都会完美。

这是我的解决方案:

我在网格定义中使用 OnRowDataBound="Exmplgrid_RowDataBound"。如果您使用它,排序将在前 3 列保持启用状态,并在第 4 列禁用(用于演示目的):

protected void Exmplgrid_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.Header)
        {
            LinkButton btnSort = (LinkButton)e.Row.Cells[0].Controls[0];
            btnSort.Text = "This is changed header 1";
            btnSort = (LinkButton)e.Row.Cells[1].Controls[0];
            btnSort.Text = "This is changed header 2";
            btnSort = (LinkButton)e.Row.Cells[2].Controls[0];
            btnSort.Text = "This is changed header 2";
            e.Row.Cells[3].Text = "This is changed header 2. SORTING DISABLED"
        }

    }

【讨论】:

    【解决方案2】:

    In order to provide a better answer please release some codes for fix!

    在网页中使用网格视图有点困难,但一些专家发布了可用于开发网站或 Web 应用程序的控件,您可以查看以下链接,甚至评估其他控件,如 WYSIWYG 编辑器、调度程序、树视图、菜单等 Telerik Asp.net 控件。

    Grid - Programmatic Sorting

    RadControls for ASP.NET AJAX

    【讨论】:

      【解决方案3】:

      使用此代码进行排序............

       protected void RadgvData_SortCommand(object sender, GridSortCommandEventArgs e)
              {
                  GridTableView tableView = e.Item.OwnerTableView;
                  e.Canceled = true;
                  GridSortExpression expression = new GridSortExpression();
                  expression.FieldName = e.SortExpression;
                  if (tableView.SortExpressions.Count == 0 || tableView.SortExpressions[0].FieldName != e.SortExpression)
                  {
                      expression.SortOrder = GridSortOrder.Descending;
                  }
                  else if (tableView.SortExpressions[0].SortOrder == GridSortOrder.Descending)
                  {
                      expression.SortOrder = GridSortOrder.Ascending;
                  }
                  else if (tableView.SortExpressions[0].SortOrder == GridSortOrder.Ascending)
                  {
                      expression.SortOrder = GridSortOrder.Descending;
                  }
      
                  tableView.SortExpressions.AddSortExpression(expression);
                  RadgvData.Rebind();
      
              }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-10-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-02-12
        相关资源
        最近更新 更多