2009-11-26 24 views
0

我觉得我能跟我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 )操作。

我对此有点困惑,我没有使用skip,只要我能看到,除非我失明?

我目前使用的SQL2000,这是一个直接关系到这个SQL实例的问题吗?

+0

你可以给页面大小gridviewname.pagesize属性。用GridView绑定数据源。 – sikender 2009-11-26 17:48:59

+0

你好Sikender - 我不太清楚你的意思(原谅我的无知)。目前,pagesize设置为10. – MrDean 2009-11-26 18:21:06

回答

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

+0

我的确在使用LINQ to SQL。 希望我的工作场所能尽快得到08 ...在这段时间只是有点不幸! – MrDean 2009-11-26 18:14:44

+0

嗯....我的LINQ到SQL查询在那里有一个.distinct()操作。 我认为这个问题与.take相关,因为跳过甚至不在我的语法中。 情节变厚!!! – MrDean 2009-11-26 18:37:20

0

控制是使用跳过去的记录,它应该显示的特定页面。

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

0

目前我的linq查询是有序的......我想这不是前进的方向还是我误解了你?

私有对象GetMaterialData(字符串MemberKey,串MaterialType,串MaterialLevel,诠释计数) { ORWeightsDataClassesDataContext分贝= newORWeightsDataClassesDataContext(); VAR查询= db.tblOnlineReportingCOMPLETEWeights 。凡(X => x.MaterialLevel == MaterialLevel & & x.MaterialText == MaterialType & & x.MemberId == MemberKey) .OrderByDescending(X => x.ProductPercentage)。取(计数); 返回查询; }