Hi,
thanks for the hint.
Originally Posted by
Vladimir
You create a record incorrectly, please use the following code
<Click Handler="GridPanel1.getStore().add(new GridPanel1.store.recordType({ test1: 'new 1', test2: 'new 2', test3: 'new 3' }));" />
Ok. But also if we used it incorrectly it worked at least until Ext.NET Rev. 3189.
I just run into the next problem. Here is the extended example:
<%@ Page Language="C#" %>
<%@ Register Assembly="Ext.Net" Namespace="Ext.Net" TagPrefix="ext" %>
<script runat="server">
protected void Page_Load(object sender, EventArgs e)
{
if (!X.IsAjaxRequest)
{
Store store = this.GridPanel1.GetStore();
store.DataSource = new object[]
{
new
{
test1 = "test11",
test2 = "test12",
test3 = "test13"
},
new
{
test1 = "test21",
test2 = "test22",
test3 = "test23"
},
new
{
test1 = "test31",
test2 = "test32",
test3 = "test33"
}
};
store.DataBind();
}
}
</script>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head2" runat="server">
<title>Ext.Net Example</title>
<ext:ResourcePlaceHolder runat="server" />
<script language="javascript">
var ObjectRecordType = Ext.data.Record.create(['test1', 'test2', 'test3']);
</script>
</head>
<body>
<form id="Form2" runat="server">
<ext:ResourceManager ID="ResourceManager2" runat="server" />
<ext:Hidden ID="SelectedObjects" runat="server" EnableViewState="true" />
<ext:GridPanel ID="GridPanel1" runat="server" AutoHeight="true">
<Store>
<ext:Store ID="Store2" runat="server">
<Reader>
<ext:JsonReader IDProperty="test1">
<Fields>
<ext:RecordField Name="test1" />
<ext:RecordField Name="test2" />
<ext:RecordField Name="test3" />
</Fields>
</ext:JsonReader>
</Reader>
<Listeners>
<Add Handler="SelectedObjects.setValue(Ext.encode(GridPanel1.getRowsValues(false)));" />
</Listeners>
</ext:Store>
</Store>
<ColumnModel ID="ColumnModel1" runat="server">
<Columns>
<ext:Column Header="Test1" DataIndex="test1" />
<ext:Column Header="Test2" DataIndex="test2" />
<ext:Column Header="Test3" DataIndex="test3" />
</Columns>
</ColumnModel>
</ext:GridPanel>
<ext:Button ID="Button1" runat="server" Text="Add with Ext.data.Record">
<Listeners>
<Click Handler="GridPanel1.getStore().add(new Ext.data.Record({ test1: 'new1', test2: 'new 2', test3: 'new 3' }));" />
</Listeners>
</ext:Button>
<ext:Button ID="Button2" runat="server" Text="Add Ext.data.Record.create">
<Listeners>
<Click Handler=" var rec = new ObjectRecordType({ test1: 'new1', test2: 'new 2', test3: 'new 3' });
GridPanel1.getStore().add(rec);
" />
</Listeners>
</ext:Button>
<ext:Button ID="Button4" runat="server" Text="Add GridPanel1.store.recordType">
<Listeners>
<Click Handler="
GridPanel1.getStore().add(new GridPanel1.store.recordType({ test1: 'new1', test2: 'new 2', test3: 'new 3' }));
" />
</Listeners>
</ext:Button>
<ext:Button ID="Button3" runat="server" Text="Then click me">
<Listeners>
<Click Handler="alert(Ext.encode(GridPanel1.getRowsValues(false)));" />
</Listeners>
</ext:Button>
</form>
</body>
</html>
If you add new data while clicking on a button it adds:
"new1", "new 2", new 3"
When you click on "Then click me" to see the encoded rows values you can see that the newly added records are encoded incorrectly:
{"test1":-1,"test2":"new 2","test3":"new 3"},{"test1":-2,"test2":"new 2","test3":"new 3"}
but I would expect to see:
{"test1": "new1" ,"test2":"new 2","test3":"new 3"},{"test1": "new1","test2":"new 2","test3":"new 3"}
And the problem is only with the new added values. The values which where added in codebehind before are encoded right.
I am also very sure that this worked before at least until Ext.NET Rev. 3189.
Regards,
Martin