如何允许排序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,
例如
- 在exception期间捕获原始HTTP POST数据
- ASP.NET JavaScriptSerializer需要HttpResponse吗?
- 如何在Asp.net core 2.0中使用log4net
- 使用ASP.net和VB.net(或C#)从XML文件编辑和删除数据
- SqlDataReader和SqlCommand
- 如何在asp .net C#登录和注册memberprofile页面中创建会话
- HttpServerUtility.UrlTokenDecode“有时”失败(Base-64 char数组的长度无效。)
- 未找到数据源名称且未指定默认驱动程序
- 使用EPPlus,我试图将gridview导出到Excel工作表