可能重复:
数据源不支持服务器端数据分页
我有一个 GridView,它使用 LINQ 查询将数据绑定到返回的结果。我在 gridview 上启用了分页,因为返回了大约 300 条记录。
我创建了一个搜索函数,它生成一般 SQL 查询并返回结果。但是执行时出现以下错误。
The data source does not support server-side data paging.
这是我执行 SQL 搜索的代码。
IEnumerable<equipment> result = db.ExecuteQuery<equipment>(SQLQuery);
equipmentGrid.DataSource = result;
equipmentGrid.DataBind();
这是网格视图代码:
<asp:GridView ID="equipmentGrid" OnPageIndexChanging="equipmentGrid_PageIndexChanging" runat="server">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<a href="details.aspx?EQCN=<%# DataBinder.Eval(Container.DataItem, "EQCN") %>">Details</a> |
<a href="edit.aspx?EQCN=<%# DataBinder.Eval(Container.DataItem, "EQCN") %>">Edit</a> |
<a href="delete.aspx?EQCN=<%# DataBinder.Eval(Container.DataItem, "EQCN") %>">Delete</a>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
还有 OnPageIndexChanging 函数
protected void equipmentGrid_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
equipmentGrid.PageIndex = e.NewPageIndex;
equipmentGrid.DataBind();
}
非常感谢H!!!!!!
您需要将Gridview的AllowPaging属性设置为true:
<asp:GridView ID="equipmentGrid" OnPageIndexChanging="equipmentGrid_PageIndexChanging" runat="server" AllowPaging="true">
您可能需要在 LINQ 查询上调用 ToList()。您还可以在 aspx 中设置 LINQ 数据源。
试试这个...
protected void gridView_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
// Add here your method for DataBinding
BindGridControl();
gridView.PageIndex = e.NewPageIndex;
gridView.DataBind();
}
如果没有数据绑定方法,您将无法获得分页结果。