それはかなり小さな問題ですが、しばらくの間私を悩ませてきました。非常に単純化された例を見てみましょう:
店:
<ext:Store ID="myStore" runat="server" UseIdConfirmation="true">
<Reader>
<ext:JsonReader IDProperty="fieldId">
<Fields>
<ext:RecordField Name="myField" Type="String" />
</Fields>
</ext:JsonReader>
</Reader>
</ext:Store>
グリッド:
<ext:GridPanel ID="myGrid" runat="server" StoreID="myStore Width="200">
<ColumnModel>
<Columns>
<ext:Column ColumnID="myField" Header='My Field' DataIndex="myField" AutoDataBind="true" Width="180" />
</Columns>
</ColumnModel>
<SelectionModel>
<ext:RowSelectionModel ID="RowSelectionModel2" runat="server" MoveEditorOnEnter="false" SingleSelect="true" />
</SelectionModel>
</ext:GridPanel>
簡単にするために、グリッド内のボタンのリスナー内に次のものがあるとします。
<Click Handler="changeRowValue(rowIndex, myGrid)" />
Javascript スニペット:
var newValue = 'foo';
var changeRowValue = function(rowIndex, grd){
var store = grd.getStore();
store.getAt(rowIndex).set('myField', newValue);
}
このように、ストアの値は更新されますが、グリッドに「foo」は表示されません。
私は簡単なことを知っている
grd.view.refresh()
グリッドを更新しますが、それは「汚れ」をきれいにし、値がまだコミットされていないことをユーザーにフィードバックするために汚れた (それは不快に聞こえます) ことを望みます (ご存知のように、右上の小さな赤い矢印)コーナー)。
これは大したことではなく、以前にやったことがあるので(どこで、どのように覚えていないのか)、できることはわかっていますが、何が問題なのですか?
PS: これは実際の問題の非常に単純化されたビジョンであることを十分に強調することはできません。