我需要创建很多GridView
来在aspx页面上显示。
然后,我根据名称数组和GridView
创建了一个生成这些DataTable
的方法。
无论如何,每个GridView
生成如下:
GenerateGridView(string gvName, DataTable dtGridView){
GridView Gview = new GridView();
Gview.ID = gvName;
Gview.AutoGenerateColumns = true;
Gview.CssClass = "table table-responsive table-condensed table-striped table-bordered";
Gview.CellPadding = 4;
Gview.GridLines = 0;
Gview.AllowPaging = false;
Gview.Attributes.Add("Font-Size", "Smaller");
Gview.Attributes.Add("HeaderStyle-Font-Size", "Small");
Gview.AllowSorting = true;
}
问题:我需要OnSorting
方法。但我没有所有的GridView
名称,它们将动态生成(Gvied.ID或gridview ID是根据SELECT命令中的表名动态生成的。)
所以我无法创建protected void gridViewName_OnSorting
方法。
生成Gridview
平滑。但每次我点击标题时,我都会得到一个
System.Web.HttpException
排序异常。
我创建了一个通用的排序:
protected void gvSorting(object sender, GridViewSortEventArgs e)
然后我在GridView
中的所有GenerateGridview(..)
添加了一个属性:
Gview.Attributes.Add("OnSorting", "gvSorting");
但是,我一直在获得Http排序异常。我调试了代码,除了
OnSorting = gvSorting
出现在生成的GridView
上,该错误仍然存在。
答案 0 :(得分:1)
您只需在Sorting
GenerateGridView
方法添加到GridView中即可
Gview.Sorting += GridViewAll_Sorting;
为所有GridViews创建一个排序方法
protected void GridViewAll_Sorting(object sender, GridViewSortEventArgs e)
{
//cast the sender as a gridview
GridView Gview = sender as GridView;
//get the datatable from viewstate (or another source)
DataTable dt = ViewState["dtGridView"] as DataTable;
//sort the datatable
dtGridView.DefaultView.Sort = e.SortExpression;
//bind the data to the gridview
Gview.DataSource = dtGridView;
Gview.DataBind();
}