【问题标题】:GridView sorting not working with ObjectDataSourceGridView 排序不适用于 ObjectDataSource
【发布时间】:2009-03-25 18:51:03
【问题描述】:

我使用 GridView 通过 DataSource 属性使用 ObjectDataSource 进行绑定。现在,问题是我有一个整数字段,如下所示:

<asp:GridView ... DataSource="MyObjectDataSource" OnSorting="MyGrdView_Sorting" >
<Columns>
<asp:BoundField DataField="IntegerField" Visible="False" SortExpression="IntegerField" />
</Columns>
</asp:GridView>

我还为我的业务逻辑目的捕获 RowCommand 事件,并在其中触发 GridView 的 Sort() 方法。如果我从 Sorting 事件处理程序中触发 Sort() 方法,我会得到堆栈溢出异常,我不知道它为什么会发生?

最后,即使做了我认为在这里没有发生的正确事情,排序在我的带有 IntegerField 的 GridView 中也不起作用。我做错了什么? :(

【问题讨论】:

    标签: c# asp.net gridview


    【解决方案1】:

    在 Sorting 事件上触发 Sort() 将再次触发 Sorting 事件,从而导致堆栈溢出。

    【讨论】:

      【解决方案2】:

      我的第一个想法是,当您可能应该使用 DataSourceId 属性时,您正在使用 DataSource 属性。

      编辑:

      好的,我回答得太快了,阅读也太慢了。 ;) 您能否与我们分享您的 MyGrdView_Sorting 实现?

      第二次编辑并回复评论:

      “我只是在 MyGrdView_Sorting 处理程序中执行 ((GridView)sender).Sort("IntegerField", SortDirection.Ascending);。”

      调用 GridView.Sort 将触发 Sorting 事件,在您的情况下将调用 Sort,这将触发 Sorting 事件,它将调用 Sort,...您看到这里的模式了吗? ;)

      您需要在业务逻辑中的另一个位置进行排序,就像您提到的那样。您可以设置 ObjectDataSource.CanSort = true,指定 SortParameterName,然后让 SelectMethod 进行实际排序。

      【讨论】:

      • 我只是做 ((GridView)sender).Sort("IntegerField", SortDirection.Ascending);在 MyGrdView_Sorting 处理程序中。但是,通过这样做,我得到了 Stack Overflow 异常,所以,我现在在我的业务逻辑中做同样的事情。
      • 您好,没有名为 ObjectDataSource.CanSort 的此类属性。首先,CanSort 是 ObjectDataSourceView 的一个属性,其次,它是一个只读属性,不能设置。但是,我确实理解为什么使用解释的模式会出现堆栈溢出异常。谢谢!
      • @Anonymous:没错,我阅读 ExecuteSelect 实现的速度太快了。 ObjectDataSourceView.CanSort 属性被硬编码为返回 true,因此指定 SortParameterName 就足够了。
      • 我尝试在我的 ObjectDataSource 定义中指定 SortParameterName。但是,它确实要求使用作为输入参数传递的 SortParameter 的 Select 实现;但是当我调试它时,它永远不会碰到新的def,而是总是选择没有参数的选择。有什么线索吗?
      • @Anonymous,我需要查看您的代码,最好是可重复的测试用例,才能给出一个好的答案。我唯一的想法是在没有重载的情况下重试,但方法具有唯一名称。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-12-27
      • 2015-06-11
      • 2012-07-10
      • 2020-06-30
      • 1970-01-01
      • 2010-11-03
      • 1970-01-01
      相关资源
      最近更新 更多