1
這是一個非常小的問題,但它一直在困擾着我。讓我們用一個很簡單的例子:ExtJS 3.4/Ext.NET:Ext.data.Record.set('field',value)不會在網格上反映更改
商店:
<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:我不能強調,這是一個非常簡化的實際問題視野,所以可能會出現混亂的事情,但我覺得這是不太可能的。
我無法重現該問題。這是我測試的完整aspx頁面:http://pastebin.com/A6rRhKs6也許,你只是錯過了商店裏的'update'事件。你有沒有嘗試用'beginEdit'和'endEdit'封裝'set'? – astrada