ページングの問題によるサーバーエラー
-
05-07-2019 - |
質問
GridView1_PageIndexChangedイベントを整理し、動作するはずだと考えています
protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
GridView1.DataSourceID = "lqPackWeights";
GridView1.PageIndex = e.NewPageIndex;
}
ただし、xの2ページ目にアクセスしようとすると、次のメッセージが表示されます。
「/ project」アプリケーションのサーバーエラー。 このプロバイダーは、すべてのID列を含むエンティティまたはプロジェクションを返す順序付きクエリでのみSkip()をサポートします。クエリは単一テーブル(非結合)クエリ、またはDistinct、Except、Intersect、またはUnion(Concatではない)です。操作。
これに少し混乱しています。目が見えない限り、スキップを使用しているのではないでしょうか。
現在SQL2000を使用していますが、これはSQLのこのインスタンスに直接関連する問題ですか?
解決
LINQ to SQLを使用していますか?この問題はSQL Server 2000に固有のようです。トラブルシューティング(LINQ to SQL)および標準クエリ演算子変換(LINQ to SQL)詳細については。
編集
以前にも同様の質問がありました。 LINQ、Skip、OrderByをご覧ください。 、およびSQL Server 2000
他のヒント
コントロールはSkipを使用して、表示することになっている特定のページのレコードを取得しています。
SQL Serverには、クエリのデフォルトの順序はありません(クラスタ化インデックスを使用する直接テーブルでない限り)ので、データソースのクエリで順序を指定する必要があります。クエリの結果には、特定の順序が必要です。順序がページごとに変わる場合、結果ごとにページを移動しても意味がありません。そのため、ページごとに結果からレコードのランダムな選択を取得できます。
現在、linqクエリは順序付けられています...それは先への道ではないと思いますか、それとも誤解していますか?
プライベートオブジェクトGetMaterialData(string MemberKey、string MaterialType、string 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).Take(Count); クエリを返します。 }