“System.StackOverflowException” 在对 GridView 进行排序时

本文关键字:排序 GridView 在对 System StackOverflowException | 更新日期: 2023-09-27 17:55:39

当我尝试对 GridView 进行排序时,系统会返回以下错误消息:

网格视图排序 类型未处理的异常 "System.StackOverflowException"发生在System.Web中.dll

这是代码,"Melder"是要排序的列的名称。

gvOutlookMeldingen.Sort("Melder", SortDirection.Ascending);

“System.StackOverflowException” 在对 GridView 进行排序时

您可能在 gvOutlookMeldingen_Sorting 中调用 Sort(),这将调用 gvOutlookMeldingen_Sorting 并再次Sort(),从而生成一个循环。

Sorting 事件上,您需要调用更改数据源的函数并再次执行查询。或者,如果它是自动绑定的,则无需执行任何操作。

资源

  • 排序文档

首次绑定时将数据表置于视图状态

gridView1.DataBind();
ViewState["dtbl"] = YourDataTable

然后喜欢...

protected void ComponentGridView_Sorting(object sender, GridViewSortEventArgs e)
{
DataTable dataTable = ViewState["dtbl"] as DataTable;
if (dataTable != null)
{
    DataView dataView = new DataView(dataTable);
    dataView.Sort = e.SortExpression + " " + ConvertSortDirection(e.SortDirection);
    ComponentGridView.DataSource = dataView;
    ComponentGridView.DataBind();
 }
 }
private string ConvertSortDirection(SortDirection sortDirection)
{
  string newSortDirection = String.Empty;
 switch (sortDirection)
 {
  case SortDirection.Ascending:
    newSortDirection = "ASC";
    break;
  case SortDirection.Descending:
    newSortDirection = "DESC";
    break;
 }
  return newSortDirection;
 }

请在此处查看 MSDN 文章 http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview.sorting.aspx