我的屏幕上有一个 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/