1

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

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

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

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

4

3 回答 3

1

我也已经面临这个“错误”。技巧是避免在更改 Header 的 Text 值时将其转换为字符串(您可能在后面的代码中使用 e.Row.Cells[0].Text = "This is changed header 1" )。在此之后,所有更改的列都将禁用排序。因此,您需要将标题不视为文本,而是将其视为 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"
        }

    }
于 2018-09-23T21:45:24.600 回答
0

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

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

网格 - 程序化排序

用于 ASP.NET AJAX 的 RadControls

于 2013-03-18T05:04:06.457 回答
0

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

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

        }
于 2013-04-16T09:36:21.780 回答