Asp.net 由于分页问题而导致服务器错误

Asp.net 由于分页问题而导致服务器错误,asp.net,sql-server-2000,paging,Asp.net,Sql Server 2000,Paging,我想我整理了我的GridView1_PageIndexchange事件,并认为它应该可以工作 protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e) { GridView1.DataSourceID = "lqPackWeights"; GridView1.PageIndex = e.NewPageIndex; } 但是,当我现在尝试访问x的第2页时,我收到以下信息:

我想我整理了我的GridView1_PageIndexchange事件,并认为它应该可以工作

 protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
    GridView1.DataSourceID = "lqPackWeights";
    GridView1.PageIndex = e.NewPageIndex;
}
但是,当我现在尝试访问x的第2页时,我收到以下信息:

“/project”应用程序中出现服务器错误。 此提供程序仅支持在返回包含所有标识列的实体或投影的有序查询上使用Skip(),其中该查询是单个表(非联接)查询,或者是独特的、除此之外的、相交的或并集(非Concat)操作

我对此感到有点困惑,除非我失明了,否则就我所能看到的范围而言,我不会使用skip


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

您是否使用LINQ to SQL?这个问题似乎是SQLServer2000独有的。有关更多信息,请参阅和上的这些MSDN文章

编辑


以前也有人问过类似的问题,请参见:

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


在SQL Server中,没有查询的默认顺序(除非是具有聚集索引的直接表),因此必须在查询中为数据源指定顺序。查询结果必须具有特定的顺序;如果一页页到另一页的顺序发生变化,从而使您从每个页面的结果中获得或多或少的随机记录,那么翻阅结果是没有意义的。

目前我的linq查询是按顺序进行的……我想这不是前进的方向,还是我误解了您

私有对象GetMaterialData(string MemberKey、string MaterialType、string MaterialLevel、int Count) { ORWeightsDataClassesDataContext db=newORWeightsDataClassesDataContext(); var query=db.tblOnlineReportingCOMPLETEWeights 。其中(x=>x.MaterialLevel==MaterialLevel&&x.MaterialText==MaterialType&&x.MemberId==MemberKey) .OrderByDescending(x=>x.ProductPercentage).Take(Count); 返回查询;
}

能否将pagesize指定给gridviewname.pagesize属性。用gridview绑定数据源。你好,Sikender-我不太清楚你的意思(请原谅我的无知)。目前,pagesize设置为10。我确实在使用LINQtoSQL。希望我的工作地点很快就要到08了…同时也有点不幸!嗯……我的linq到sql查询中有一个.distinct()操作。我认为问题在于。take as skip在我的语法中甚至不存在。情节越来越浓!!!