在后面的代码上排序GridView。 Gridview动态生成。没有调用OnSorting方法

时间:2016-11-25 20:40:24

标签: c# asp.net sorting exception gridview

我需要创建很多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上,该错误仍然存​​在。

1 个答案:

答案 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();
}