当我尝试对GridView进行排序时,系统会返回以下错误消息:
gridview sort类型的未处理异常 System.Web.dll中发生'System.StackOverflowException'
这是代码,“Melder”是要排序的列的名称。
gvOutlookMeldingen.Sort("Melder", SortDirection.Ascending);
答案 0 :(得分:4)
你可能在Sort()
内拨打gvOutlookMeldingen_Sorting
,这会再次拨打gvOutlookMeldingen_Sorting
和Sort()
,从而产生一个循环。
在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