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);
}
}
});
ただし、値が更新されると、カスタム スタイルはすぐには行に適用されません。たとえば、行のテキストの色は、黒に変更する必要がある場合でも緑のままです。
グリッドが操作されると (列の並べ替えなど)、行の色が正しい色に更新されます。
ストア フェッチ関数が呼び出された直後に、グリッド行の正しいカスタム スタイルをトリガーする方法はありますか?
私の質問が少し長すぎる場合はお詫びします-問題を完全に説明しようと思いました:)