如何在更改标题文本后在gridview中启用排序

时间:2013-03-18 04:42:05

标签: c# asp.net sorting gridview

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

我通过点击列标题

编写了必要的排序功能

但是当我在代码中更改标题时,我无法通过单击

进行排序

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

3 个答案:

答案 0 :(得分:1)

我也已经遇到了这个“错误”。技巧是避免在更改Header的Text值时将其转换为字符串(您可能在后面的代码中使用e.Row.Cells [0] .Text =“ This is 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"
        }

    }

答案 1 :(得分:0)

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

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

Grid - Programmatic Sorting

RadControls for ASP.NET AJAX

答案 2 :(得分: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();

        }