ASP.NET DataContext GridView分页

时间:2011-10-14 18:36:20

标签: c# asp.net paging datacontext

  

可能重复:
  The data source does not support server-side data paging

我有一个使用LINQ查询数据绑定到返回结果的GridView。我已经在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();

这是gridview代码:

<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();
}

非常感谢mucH !!!!!

2 个答案:

答案 0 :(得分:0)

您需要将Gridview AllowPaging属性设置为true:

<asp:GridView ID="equipmentGrid" OnPageIndexChanging="equipmentGrid_PageIndexChanging" runat="server" AllowPaging="true">

您可能需要在LINQ查询上调用ToList()。您还可以在aspx中设置LINQ数据源。

答案 1 :(得分:0)

试试这个...

protected void gridView_PageIndexChanging(object sender, GridViewPageEventArgs e)
{

    // Add here your method for DataBinding
     BindGridControl();

    gridView.PageIndex = e.NewPageIndex;
    gridView.DataBind();
 }

如果没有数据绑定方法,您将无法获得分页结果。