数据源不支持服务器端数据分页。为什么?

时间:2013-12-14 05:47:52

标签: asp.net gridview

我有一个gridview:

<asp:GridView ID="GridView1" runat="server"
            ForeColor="ActiveCaptionText" BackColor="#FFFF99" GridLines="None"
            onpageindexchanging="GridView1_PageIndexChanging" AllowPaging="True"
            CssClass="gridrownormal" onpageindexchanged="GridView1_PageIndexChanged">



        </asp:GridView>

并使用此代码绑定数据:

GridView1.DataSource = null;

               List<SearchEngineEO> docs = Search(txtSearch1.Text, ddlSelectCondition1.Text);

               var query18 = (from c in docs select new { c.DocNO, c.DocType, c.Title,  c.PublisherName, c.PublishedDate}).ToList().Distinct();

               GridView1.DataSource = query19;
                GridView1.DataBind();

如果我将allowpaging设置为false,那么每件事情都可以,但是当设置为true时,我会看到这个错误:

“数据源不支持服务器端数据分页。”

2 个答案:

答案 0 :(得分:2)

这是因为当您在gridview上转换此属性时,它使用其内置的分页功能,该功能只能用于扩展ICollection接口的数据源。 ..在这种情况下,您的对象(query19)不支持它。您应该能够通过反转linq扩展方法调用来使其工作...而不是这样做....

ToList ().Distinct ()

这样做....

Distinct().ToList()

那应该有用

答案 1 :(得分:0)

这可能是因为您尝试使用“var query18”获取数据,然后使用“query19”将值分配给“GridView1.DataSource”,还是打字错误?

另一件事是尝试实例化“GridView1.DataSource”而不是null。