2

Dojo を使用して、データ ストアにリンクするグリッドをセットアップしました。グリッドの読み込み後、行をループし、セルの値に基づいて行のテキストの色を設定する接続関数を取得しました。これは問題なく動作します (コードは以下にコピーされています)。

var gagrid = new dojox.grid.EnhancedGrid({
query: {
Keyword: '*'
},
store: gastore,
structure: galayout,
escapeHTMLInData: false,
plugins: {
nestedSorting: true
}
},
document.createElement('div'));

dojo.connect(gagrid, 'onStyleRow', this, function(row) {
var item = gagrid.getItem(row.index);

if (item) {
var value = gagrid.store.getValue(item, "Performance", null);
if (value == 3) {
row.customStyles += "color: green;";
} else if (value == 2) {
row.customStyles += "color: red;";
}
}
gagrid.focus.styleRow(row);
gagrid.edit.styleRow(row);
});

ページ/グリッドが(ユーザーの操作を通じて)ロードされた後、ストアフェッチ機能を使用する機能が少しあります。グリッド ストアの行をループし、ユーザー入力に応じてセルの値を変更します。繰り返しますが、これは正常に機能し、グリッド内の値は正しく更新されます。以下のコード。

gastore.fetch({
query: {Keyword: '*'},
onComplete: function(items, request){
var i;
for (i = 0; i < items.length; i++) {
var item = items[i];
var performance;
if(parseInt(items[i]["Visits"])>=rp)
{
if(parseInt(items[i]["Bounce"])<=rb&&parseInt(items[i]["Time"])>=rmp)
{
performance=3;
}
else
{
performance=2;
}
}
else
{
performance=1;
}
gastore.setValue(item,"Performance",performance);
}
}
});

ただし、値が更新されると、カスタム スタイルはすぐには行に適用されません。たとえば、行のテキストの色は、黒に変更する必要がある場合でも緑のままです。

グリッドが操作されると (列の並べ替えなど)、行の色が正しい色に更新されます。

ストア フェッチ関数が呼び出された直後に、グリッド行の正しいカスタム スタイルをトリガーする方法はありますか?

私の質問が少し長すぎる場合はお詫びします-問題を完全に説明しようと思いました:)

4

1 に答える 1

1

行をループする必要はありません。レイアウト「galayout」を定義するときに「formatter」と「styles」属性を使用できます...それを見てください:

function getExtImg(valueOfColumn) { // Do something with the value...
  return valueOfColumn+'do something with it';
}

var layout = [[ {'name': 'Ext', 'field': 'extension', formatter : getExtImg , styles:'padding:0px;'},

{'name': 'Filename', 'field': 'documentName', width: 'auto'}]];

// このレイアウトをグリッドに追加...

フォーマッタ関数として指定したものは、すべての行に対して呼び出されます! また、styles 属性で指定したスタイル。

これはあなたの問題を解決するのに役立つと思います!

フォーマッタ内で行スタイルを変更できるようにするには、次のようなフォーマッタ関数をセットアップします。

formatter:function(val, rowIdx, cell) { classes = compute_classes(val, rowIdx, cell); cell.customClasses.push(クラス); }

出典: Dojo データ・グリッドのセルを条件付きでスタイルするにはどうすればよいですか?

簡単にわかるように、プッシュ機能を使用して現在の行にクラスを追加できます。

ルシアン

于 2013-02-12T07:42:20.763 に答える