Feb 01, 2012, 5:12 PM
Unable to force Roweditor's "AfterEdit" to fire
I am trying to change a field that is not displayed in my grid using javascript. Unfortunately the RowEditor does not detect the change and "AfterEdit" does not fire, even when I manually mark the record as "dirty". In my simplified example below, the "AfterEdit" event fires when a row is edited (by double clicking) and the checkbox is checked or unchecked. However, I would expect it to always fire as I am changing a record field and marking the entire record dirty. How can I tell the RowEditor that the record was modified?
<%@ Page Language="C#" %>
<%@ Register Assembly="Ext.Net" Namespace="Ext.Net" TagPrefix="ext" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
public class Sample
{
public int IdField { get; set; }
public bool VisibleField { get; set; }
public bool HiddenField { get; set; }
}
protected void storeTest_refresh(object sender, StoreRefreshDataEventArgs e)
{
List<Sample> data = new List<Sample>{new Sample{IdField=1, VisibleField=true, HiddenField=false}
, new Sample{IdField=2, VisibleField=false, HiddenField=true}};
storeTest.DataSource = data;
storeTest.DataBind();
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<ext:ResourceManager ID="ResourceManager1" runat="server" ViewStateMode="Disabled" />
<ext:GridPanel ID="gridTest" runat="server" Width="300" Height="300">
<Store>
<ext:Store ID="storeTest" runat="server" OnRefreshData="storeTest_refresh" AutoLoad="true">
<Proxy>
<ext:PageProxy />
</Proxy>
<Reader>
<ext:JsonReader IDProperty="IdField">
<Fields>
<ext:RecordField Name="IdField" Type="Int" />
<ext:RecordField Name="VisibleField" Type="Boolean" />
<ext:RecordField Name="HiddenField" Type="Boolean" />
</Fields>
</ext:JsonReader>
</Reader>
</ext:Store>
</Store>
<ColumnModel>
<Columns>
<ext:Column DataIndex="IdField">
</ext:Column>
<ext:Column DataIndex="VisibleField">
<Editor>
<ext:Checkbox runat="server">
<Listeners>
<show Handler=" var r =gridTest.getRowEditor().record; r.data.HiddenField = !r.data.HiddenField;alert('changed value of hidden field to ' + r.data.HiddenField);r.markDirty()" />
</Listeners>
</ext:Checkbox>
</Editor>
</ext:Column>
</Columns>
</ColumnModel>
<Plugins>
<ext:RowEditor ID="RowEditor1" runat="server" SaveText="Update" ClicksToEdit="2">
<Listeners>
<AfterEdit Handler="alert('fired afteredit')" />
</Listeners>
</ext:RowEditor>
</Plugins>
</ext:GridPanel>
</form>
</body>
</html>