0

C# と ASP.Net で e コマース アプリケーションを開発しました。管理者ユーザーの「ダッシュボード」ランディング ページについては、いくつかの異なる時間範囲の合計売上金額を表示する GridView を提供したいと思います。これらは私の列 (つまり、前日、先週、先月、最後の年、これまでの合計)。これらの値を、異なるステータスの注文 (つまり、完了、支払い済みだが発送されていない、進行中) に提供したいと思います。これに似たもの:

|OrderStatus|Today|LastWeek|LastMonth|
|Processed  |$10  |$100    |$34000   |
|PaidNotShip|$4   |$12     |$45      |

私の質問:これを行うための最良/最も効率的な方法は何ですか? 個別の SQL ステートメントを記述して結合し、グリッドビューを sqldatasource にバインドできることはわかっています。

(select amountForYesterday, amountForLastWeek from sales where orderStatus = processed)
UNION 
(select amountForYesterday, amountForLastWeek from sales where orderStatus = paidnotshipped) 

しかし、これは、値ごとに個別のクエリを効果的に作成することになるため、面倒で非常に効率が悪いように思えます。

また、ロード時に .cs ページの後ろでこれを行い、プログラムでグリッド ビューを行ごとに設定することもできます。

この GridView は、ユーザーの特定の組織の情報のみを表示するため、それに基づいてフィルター処理する必要があります。

大規模なクエリを作成せずに、ページが表示されるたびにそのクエリとデータベースに継続的にアクセスすることなく、これを行う方法について、私はちょっと途方に暮れています。

何か案は?

4

3 に答える 3

0

データや GridViews (行へのアクセスなど) を操作するために LINQ を使用することを好みます。例として、私がここで言及していることを正確に行う GitHub 上のプロジェクトを見てください。これは、説明目的で以前に使用した単なるサンドボックスであることに注意してください。

GitHub リポジトリ

https://github.com/pauloosthuysen/int

その他の有用な情報:

http://www.codeproject.com/Articles/33685/Simple-GridView-Binding-using-LINQ-to-SQL

于 2012-09-19T19:14:35.670 に答える
0

LastWeek と LastMonth の売上などはあまり変化しません。それを組織別に索引付けされた静的辞書に格納するか、別のテーブルに要約してアクセスを高速化することができます。このようにして、同じ数を何度も取得するために同じ大量の行を選択する必要がなくなります。特別な要求がない限り、単純なので辞書ソリューションに固執しますが、組み合わせも良いソリューションになる可能性があります

于 2012-09-19T19:15:09.447 に答える
0

それを行う直接的な方法はありません。ただし、DB をすべての列の合計にヒットする代わりに、グリッドへのビンジングに使用されるデータテーブルを使用して処理を実行できます。

あなたがする必要があるのは、使用することだけです

Dim iSumSal As Integer

iSumSal = StudentTable.Compute("SUM(sal)", "")

同様に、他の列に対しても実行できます。

これが完了したら。次に、すべての合計値を含む新しい行をデータ テーブルに追加するだけです。

そして、それをグリッドにバインドできます。

オプション - 新しい行の最初の列にテキスト値を「Total:」として入力できます。

ありがとう

ラフル

于 2012-09-25T11:40:46.300 に答える