«System.StackOverflowException» при сортировке GridView - PullRequest
1 голос
/ 10 мая 2011

Когда я пытаюсь отсортировать GridView, система выдает следующее сообщение об ошибке:

gridview sort Необработанное исключение типа 'System.StackOverflowException' произошло в System.Web.dll

Это код, а "Melder" - это имя столбца для сортировки.

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

Ответы [ 2 ]

4 голосов
/ 10 мая 2011

Вы, вероятно, вызываете Sort() внутри gvOutlookMeldingen_Sorting, что вызовет gvOutlookMeldingen_Sorting и Sort() снова, создавая цикл.

В случае события Sorting вам необходимо вызвать функции, которые изменяют источник данных и снова выполнить запрос. Или, если он автоматически связан, вам не нужно ничего делать.

Ресурсы

2 голосов
/ 12 мая 2011

Поместите Datatable в 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

...