#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