这是一个很小的问题,但它一直困扰着我一段时间。让我们来看一个非常简化的例子:
店铺:
<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:我不能过分强调这是对实际问题的非常简化的看法,因此可能中间会有一些东西把事情搞砸,但我发现这不太可能。