‘Система.Исключение StackOverflowException’ при сортировке GridView

#c# #asp.net #sorting #gridview #stack-overflow

#c# #asp.net #сортировка #gridview #переполнение стека

Вопрос:

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

gridview сортирует необработанное исключение типа ‘System.Исключение StackOverflowException’ произошло в System.Web.dll

Это код, а «Melder» — это имя столбца для сортировки.

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

Комментарии:

1. Какие типы объектов хранятся в столбце «Объединяющий»?

2. тип объектов — string

3. Каков ваш источник данных? Не могли бы вы полностью написать код вашего метода сортировки?

4. У меня нет источника данных, GridView заполнен элементами из службы Exchange.

5. боже, проверь его профиль.. он дважды задал один и тот же вопрос

Ответ №1:

Вероятно, вы вызываете Sort() inside gvOutlookMeldingen_Sorting , который будет вызывать gvOutlookMeldingen_Sorting и Sort() снова, генерируя таким образом цикл.

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

Ресурсы

Ответ №2:

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