c# - 数据源不支持服务端数据分页

标签 c# asp.net linq sorting gridview

我的屏幕上有一个 GridView,需要它来允许分页。

标记:

<asp:GridView ID="GridView1" runat="server" AllowPaging="True" 
  AutoGenerateColumns="False" DataSourceID="ObjectDataSource1">
  <Columns>
    <asp:BoundField DataField="appID" HeaderText="appID" SortExpression="appID" />
  </Columns>
</asp:GridView>

<asp:ObjectDataSource ID="ObjectDataSource1" runat="server" 
  SelectMethod="GetBookingId" 
  TypeName="AppointmentRepository">
  <SelectParameters>
    <asp:Parameter Name="maximumRows" Type="Int32" />
    <asp:Parameter Name="startRowIndex" Type="Int32" />
  </SelectParameters>
</asp:ObjectDataSource>

代码隐藏:

ObjectDataSource1.SelectParameters["maximumRows"].DefaultValue = "10";
ObjectDataSource1.SelectParameters["startRowIndex"].DefaultValue = "0";

LINQ 查询:

public IQueryable<tblAppointment> GetBookingId(int maximumRows, int startRowIndex)
{
    var result = (FROM a IN dc.tblAppointments
                  SELECT a).Skip(startRowIndex).Take(maximumRows);
}

但是我收到这个错误:

The data source does not support server-side data paging.

我做错了什么?

最佳答案

结果变量上的一个简单的 ToList() 应该可以工作。

编辑: 正如我的回答下面的评论中所解释的,错误的原因是数据源应该实现 ICollection。 IEnumerable 不会,当您执行 ToList() 时,它会将其转换为实现 ICollection 的列表。

关于c# - 数据源不支持服务端数据分页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1661292/

相关文章:

c# - Linq 查询以列形式返回国家/地区,以行形式返回城市并在单元格中计数

c# - 将 CollectionBase 转换为 List 或可与 Linq 一起使用的数据类型

c# - 为什么协变和逆变不支持值类型

c# - 如何给ElapsedEventHandler调用的函数传递参数?

c# - 为不同的例子重复场景

c# - Entity Framework 错误 "Entity type is not mapped."

c# - 将 .net 图形转换为 java

c# - Nancy 的异步请求处理程序的 CancellationToken 从哪里来,何时取消?

c# - 从表中选择,然后将 (value + 1) 插入到另一个表中?

c# - LINQ Group 通过跨多个表/类执行连接