asp.net – 如何使用GridView和ObjectDataSource排序?

我有一个GridView与ObjectDataSource,我想要能够排序.

分页工作正常,但排序给我一个例外:
“GridView’gridView’被触发事件排序未被处理.

如何在服务器端启用排序?

(即gridView.EnableSortingAndPagingCallbacks必须保持“false”)

解决方法

将gridView.AllowSorting属性设置为true.从这里,如果您使用实现IBindingList的对象,则网格应允许您在回发后自动对数据进行排序.但是,由于最有可能不是这样,您应该在上面提到TheTXI的建议,并自己处理排序事件.在Codebehind中连接GridView.sorting事件,就像这样:
gridView.sorting += new GridViewSortEventHandler(gridView_Sorting);

处理gridView_Sorting方法中的排序,应该如下所示:

private void gridView_Sorting(object sender,GridViewSortEventArgs e)
{
     //Sorting logic here
}

此外,您可以使用连接到控件的OnSort =“gridView_Sorting”将页面上的事件连接起来.

记住,由于您将gridView.EnableSortingAndPagingCallbacks设置为false,所以在用户尝试排序时不会立即触发,而是等待服务器的回发.

我希望这有帮助!

编辑:

由于ObjectDataSource似乎是选择的中间人,下面简要介绍了排序的布线.在您的页面中使用以下内容(完整示例可以在MSDN上找到here,靠近底部):

<asp:GridView ID="TestGridView" runat="server" DataSourceID="ObjectDataSourceTest"
        AllowSorting="True">
    </asp:GridView>
    <asp:ObjectDataSource ID="ObjectDataSourceTest" runat="server" 
        SelectMethod="SelectMethod" 
        TypeName="Samples.AspNet.CS.sortingData" 
        SortParameterName="sortExpression">
    </asp:ObjectDataSource>

而不是实际使用gridView.sorting事件,您将跳过ObjectDataSource来处理排序.一旦排序被触发,它应该在您的代码后面调用SelectMethod中找到的方法.然后,在SelectMethod里面,你可以处理GridView对象的重建,看起来像:

public void SelectMethod(string sortExpression)
{
     //Rebuild gridView table if necessary,same method used in 
     //on a postback,and retrieve data from the database. Once
     //completed sort the data with:

     gridView.sort(sortExpression,SortDirection.(Ascending or Descending))
}

相关文章

### 创建一个gRPC服务项目(grpc服务端)和一个 webapi项目(...
一、SiganlR 使用的协议类型 1.websocket即时通讯协议 2.Ser...
.Net 6 WebApi 项目 在Linux系统上 打包成Docker镜像,发布为...
一、 PD简介PowerDesigner 是一个集所有现代建模技术于一身的...
一、存储过程 存储过程就像数据库中运行的方法(函数) 优点:...
一、Ueditor的下载 1、百度编辑器下载地址:http://ueditor....