私は SmartGWT を使用しており、setData() 呼び出しを使用して ListGridRecords の配列が取り込まれた ListGrid があります。単一のレコードの進行状況プロパティを (テスト用のタイマーで) 更新し、ブラウザーで更新しようとしています。draw()、redraw()、markForRedraw()などのさまざまな組み合わせを試しましたが、役に立ちませんでした。
また、テーブル クラスで updateRecordComponent() メソッドをオーバーライドしようとしましたが、レコードが最初に作成されたとき (createRecordComponent() の後) にのみ呼び出されます。
DataSource にバインドしてこれを達成したくないことに注意してください。クライアント側で属性を更新できるようにしたいだけです。
ArrayList<SegmentSortRecord> mRecords;
mRecords.add(new SegmentSortRecord("03312010_M001_S004"));
mRecords.add(new SegmentSortRecord("03312010_M001_S005"));
mRecords.add(new SegmentSortRecord("03312010_M001_S006"));
mRecords.add(new SegmentSortRecord("03312010_M001_S007"));
SegmentSortRecord[] records = new SegmentSortRecord[mRecords.size()];
mRecords.toArray(records);
mSortProgressTable.setData(records);
. . .
mTestTimer = new Timer()
{
public void run()
{
mTestPercent += 5;
if (mTestPercent <= 100)
{
mSortProgressTable.getRecord(2).setAttribute(Constants.PROGRESS_COL_NAME, mTestPercent);
//mSortProgressTable.markForRedraw();
//mSortProgressTable.redraw();
}
else
{
mTestPercent = 0;
}
}
};
...
@Override
protected Canvas createRecordComponent(final ListGridRecord aRecord, Integer aColumn)
{
String fieldName = getFieldName(aColumn);
// Want to override the behavior for rendering the "progress" field
if (fieldName.equals(Constants.PROGRESS_COL_NAME))
{
Progressbar bar = new Progressbar();
bar.setBreadth(10);
bar.setLength(100);
// The JavaScript record object contains attributes that we can
// access via 'getAttribute' functions.
bar.setPercentDone(aRecord.getAttributeAsInt(Constants.PROGRESS_COL_NAME));
return bar;
}
助けてくれてありがとう。