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

前端之家收集整理的这篇文章主要介绍了asp.net – 如何使用GridView和ObjectDataSource排序?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_404_1@我有一个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.f2er.com/aspnet/250872.html

猜你在找的asp.Net相关文章