由于分页问题导致服务器错误

时间:2009-11-26 17:35:11

标签: asp.net sql-server-2000 paging

我想我整理了我的GridView1_PageIndexChanged事件并认为它应该可行

 protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
    GridView1.DataSourceID = "lqPackWeights";
    GridView1.PageIndex = e.NewPageIndex;
}

但是,当我现在尝试访问x的第2页时,我会收到以下内容:

'/ project'应用程序中的服务器错误。 此提供程序仅支持Skip()返回有序查询,返回包含所有标识列的实体或投影,其中查询是单表(非连接)查询,或者是Distinct,Except,Intersect或Union(不是Concat)操作。

我对此感到有点困惑,除非我失明,否则我不会使用跳过,除非我失明了?

我目前正在使用SQL2000,这是一个与这个SQL实例直接相关的问题吗?

3 个答案:

答案 0 :(得分:0)

您使用的是LINQ to SQL吗?该问题似乎是SQL Server 2000独有的。有关详细信息,请参阅Troubleshooting (LINQ to SQL)Standard Query Operator Translation (LINQ to SQL)上的这些MSDN文章。

修改

以前曾问过类似的问题,请参阅:LINQ, Skip, OrderBy, and SQL Server 2000

答案 1 :(得分:0)

控件正在使用Skip来获取它应该显示的特定页面的记录。

在SQL Server中,查询没有默认排序(除非它是具有聚簇索引的直接表),因此您必须在查询中指定数据源的顺序。查询的结果必须具有特定的顺序;如果订单在页面之间发生变化,那么在页面之间进行页面更改是没有意义的,这样您就可以从每个页面的结果中随机选择一些记录。

答案 2 :(得分:0)

目前我的linq查询是订购的......我想这不是前进的方式,还是我误解了你?

私有对象GetMaterialData(字符串MemberKey,字符串MaterialType,字符串MaterialLevel,int Count)     {         ORWeightsDataClassesDataContext db = newORWeightsDataClassesDataContext();         var query = db.tblOnlineReportingCOMPLETEWeights                     .Where(x => x.MaterialLevel == MaterialLevel&& x.MaterialText == MaterialType&& x.MemberId == MemberKey)                     .OrderByDescending(x => x.ProductPercentage)。取(计数);         返回查询;     }