我想我整理了我的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实例直接相关的问题吗?
答案 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)。取(计数); 返回查询; }