微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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))
}

原文地址:https://www.jb51.cc/aspnet/250872.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐