我的网页中有一个 gridview 来显示我的查询结果
我编写了通过单击列标题进行排序的必要功能
但是当我在后面的代码中更改标题时,我无法通过单击进行排序
绑定数据后如何将列格式从文本更改为超链接?
我也已经面临这个“错误”。技巧是避免在更改 Header 的 Text 值时将其转换为字符串(您可能在后面的代码中使用 e.Row.Cells[0].Text = "This is changed header 1" )。在此之后,所有更改的列都将禁用排序。因此,您需要将标题不视为文本,而是将其视为 LinkButton,一切都会完美。
这是我的解决方案:
我在我的网格定义中使用 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"
}
}
In order to provide a better answer please release some codes for fix!
在网页中使用网格视图有点困难,但一些专家发布了可用于开发网站或 Web 应用程序的控件,您可以查看以下链接,甚至评估其他控件,如 WYSIWYG 编辑器、调度程序、树视图, Telerik Asp.net 控件上的菜单和更多内容。
使用此代码进行排序............
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();
}