4

たとえば、野球チームの統計を表示するグリッドビューがあります。これは標準的なスポーツ統計グリッドです。行には各プレーヤーの統計が表示され、列には各プレーヤーの特定の統計が表示されます。

ここまでは簡単です。しかし、私が次にやりたいことは、統計列の最大値または最小値 (チーム リーダー) をスタイル (強調表示または太字) することです。たとえば、プレーヤー A は 1 つまたは 2 つのカテゴリでのみリードする可能性があるため、行全体のスタイルを設定することはできません。プレーヤー A が三振でチームをリードしている場合、私は彼が持っていた三振の数をスタイルしたいだけです (そのセルのみ)。

これを処理する最良の方法は何ですか? SQL Server にすべての作業を実行させ、事実上、各プレイヤーのすべての統計をランク付けし、列の数を効果的に 2 倍にします (例: col: AB、col: ABRank)。または、グリッドビューのrowdataboundイベントにこれを処理させますか?

後者を選択した場合、バインドする前にデータテーブルからすべての統計カテゴリの最大値を取得し (たとえば、ローカル変数に格納する)、rowdatabound で、値が一致する場合はスタイルを適用すると思います。

4

3 に答える 3

2

何をしているかにもよりますが、バインドする列の数はおそらく一定です。

バインドする前に、データソースでLINQを使用します。たとえば、最大値が必要なタイプごとに使用します。

// create a global variable to hold the data
int _maxHomeRuns = 0;

// Then before you bind the datasource, find out the max of each stat
_maxHomeRuns = baseballStats.Max(i => i.HomeRuns);  // get the max

// Then in your template columns Label control DataBinding method    
if ((int)(Eval("HomeRuns")) == _maxHomeRuns)
{
    // Assign the style you want
    ((Label)(sender)).CssClass = "MaxCellStyle";
}

私はを使用しませんRowDataBinding。コントロールレベルで実行するOnDataBindingので、チェックを特にコントロールにスコープしているので、行でコントロールを検索する必要はありません。

于 2011-03-30T01:34:04.537 に答える
2

あなたが言及しなかったオプションがあります。javascriptクライアントサイドを使用して強調表示を行うことができます。テーブル上で実行するのはかなり簡単である必要があり、列の最大値を強調表示します。

于 2011-03-30T00:19:56.600 に答える
2

あなたはすでにあなた自身の質問に答えています。

または、グリッドビューのrowdataboundイベントにこれを処理させますか?

後者を選択した場合、バインドする前にデータテーブルからすべての統計カテゴリの最大値を取得し (たとえば、ローカル変数に格納する)、rowdatabound で、値が一致する場合はスタイルを適用すると思います。

于 2011-03-30T00:15:30.220 に答える