加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

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

发布时间:2020-12-15 23:47:48 所属栏目:asp.Net 来源:网络整理
导读:我有一个GridView与ObjectDataSource,我想要能够排序. 分页工作正常,但排序给我一个例外: “GridView’gridView’被触发事件排序未被处理. 如何在服务器端启用排序? (即gridView.EnableSortingAndPagingCallbacks必须保持“false”) 解决方法 将gridView.A
我有一个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))
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读