排序GridView时出现'System.StackOverflowException'

时间:2011-05-10 07:05:49

标签: c# asp.net sorting gridview stack-overflow

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

  

gridview sort类型的未处理异常   System.Web.dll中发生'System.StackOverflowException'

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

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

2 个答案:

答案 0 :(得分:4)

你可能在Sort()内拨打gvOutlookMeldingen_Sorting,这会再次拨打gvOutlookMeldingen_SortingSort(),从而产生一个循环。

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

资源

答案 1 :(得分:2)

第一次绑定时将数据表置于Viewstate中

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