如何允许排序gridview?

我有一个gridview并启用了排序。 运行应用程序时,我单击第一列进行排序。 我得到这个错误:“GridView’gvOutlookMeldingen’触发了事件排序,但没有处理。”

这是gridview:

            
<asp:Label ID="lblOmschrijving" runat="server" Text=''>

任何帮助表示赞赏

你在其他答案中提到的BoundField中缺少SortExpression

您还使用了TemplateField ,根据生成数据的内容,可能需要手动排序SortExpression使用SortExpression

如果是这种情况,那么要手动排序,一种方法是将一个OnSorting回调添加到GridView ,将SortExpression添加到您的字段以及一个在您的代码隐藏中回调的方法。

这将导致标记和代码类似于(未经测试):

       

…和:

 protected void gvOutlookMeldingen_Sorting(object sender, GridViewSortEventArgs e) { switch (e.SortExpression) { case "Melder": if (e.SortDirection == SortDirection.Ascending) { gvOutlookMeldingen.DataSource = // Asc query for Melder field; gvOutlookMeldingen.DataBind(); } else { gvOutlookMeldingen.DataSource = // Desc query for Melder field ; gvOutlookMeldingen.DataBind(); } break; // case statements for your other fields. } } 

这段代码可能会有所帮助(对于你这些老post的人来说):

 protected void gvOutlookMeldingen_Sorting(object sender, GridViewSortEventArgs e) { DataTable dt = (DataTable)Session["mySessionStoredTable"]; dt.DefaultView.Sort = e.SortExpression // column name + " " + SortDir(e.SortExpression); // sort direction gv.DataSource = dt; gv.DataBind(); } private string SortDir(string sColumn) { string sDir = "asc"; // ascending by default string sPreviousColumnSorted = ViewState["SortColumn"] != null ? ViewState["SortColumn"].ToString() : ""; if (sPreviousColumnSorted == sColumn) // same column clicked? revert sort direction sDir = ViewState["SortDir"].ToString() == "asc" ? "desc" : "asc"; else ViewState["SortColumn"] = sColumn; // store current column clicked ViewState["SortDir"] = sDir; // store current direction return sDir; } 

您需要设置要排序的列的SortExpression属性。 并且您需要向Sorting事件添加事件处理程序,以使排序在DataSource上运行。

有关详细信息,请参阅此MSDN文章或此示例以及排序和分页 。

我假设你的网格视图的数据源是一个DataTable,所以我认为你必须添加

 SortExpression="column name" 

在每个asp:您希望能够排序的Boundfield,

例如