Hi Daniil,
It is working if we add DataSource as object array. Why the values are not showing if we assign DataTable as DataSource as in example below...
<%@ 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)
{
cboValue.Items.Add(new Ext.Net.ListItem("val1", "1"));
cboValue.Items.Add(new Ext.Net.ListItem("val2", "2"));
cboValue.Items.Add(new Ext.Net.ListItem("val3", "3"));
cboValue.Items.Add(new Ext.Net.ListItem("val4", "4"));
//this.Store1.DataSource = new object[]
//{
// new object[] { "1","test1", "2", "test3" },
// new object[] { "2","test4", "test5", "test6" },
// new object[] { "3","test7", "4", "test9" },
// new object[] { "4","test10", "test11", "test12" }
//};
//this.Store1.DataBind();
this.Store1.DataSource = GetDataInfo();
this.Store1.DataBind();
}
}
public DataTable GetDataInfo()
{
DataTable dt = new DataTable();
DataRow dr;
dt.Columns.Add("TestID");
dt.Columns.Add("test1");
dt.Columns.Add("test2");
dt.Columns.Add("test3");
dr = dt.NewRow();
dr[0] = "1";
dr[1] = "test1";
dr[2] = "2";
dr[3] = "test3";
dt.Rows.Add(dr);
dr = dt.NewRow();
dr[0] = "2";
dr[1] = "test4";
dr[2] = "test5";
dr[3] = "test6";
dt.Rows.Add(dr);
dr = dt.NewRow();
dr[0] = "3";
dr[1] = "test7";
dr[2] = "4";
dr[3] = "test9";
dt.Rows.Add(dr);
dr = dt.NewRow();
dr[0] = "4";
dr[1] = "test10";
dr[2] = "test11";
dr[3] = "test12";
dt.Rows.Add(dr);
return dt;
}
protected void Store_BeforeStoreChanged(object sender, BeforeStoreChangedEventArgs e)
{
string jsonData = e.DataHandler.JsonData;
X.Msg.Alert("Saved", jsonData).Show();
}
</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="Head1" runat="server">
<title>Ext.Net Example</title>
</head>
<body>
<form id="Form1" runat="server">
<ext:ResourceManager ID="ResourceManager1" runat="server" />
<ext:GridPanel ID="GridPanel1" runat="server" AutoHeight="true">
<Store>
<ext:Store
ID="Store1"
runat="server"
RefreshAfterSaving="None"
OnBeforeStoreChanged="Store_BeforeStoreChanged">
<Reader>
<ext:ArrayReader>
<Fields>
<ext:RecordField Name="TestID" />
<ext:RecordField Name="test1" />
<ext:RecordField Name="test2" />
<ext:RecordField Name="test3" />
</Fields>
</ext:ArrayReader>
</Reader>
</ext:Store>
</Store>
<ColumnModel ID="ColumnModel1" runat="server">
<Columns>
<ext:Column Header="Test1" DataIndex="test1">
<Editor>
<ext:TextField ID="TextField1" runat="server" />
</Editor>
</ext:Column>
<ext:Column Header="Test2" DataIndex="test2">
<Editor>
<ext:ComboBox ID="cboValue" runat="server" />
</Editor>
</ext:Column>
<ext:Column Header="Test3" DataIndex="test3">
<Editor>
<ext:TextField ID="TextField3" runat="server" />
</Editor>
</ext:Column>
<ext:CommandColumn Width="40">
<Commands>
<ext:GridCommand Text="Reject" ToolTip-Text="Reject row changes" CommandName="taskreject" Icon="ArrowUndo" />
</Commands>
<PrepareToolbar Handler="toolbar.items.get(0).setVisible(record.dirty);" />
</ext:CommandColumn>
</Columns>
</ColumnModel>
<Listeners>
<Command Handler="record.reject();" />
</Listeners>
<Plugins>
<ext:EditableGrid ID="EditableGrid1" runat="server" />
</Plugins>
<View>
<ext:GridView ID="GridView1" runat="server" ForceFit="true" />
</View>
</ext:GridPanel>
<ext:Button ID="Button1" runat="server" Text="Save">
<Listeners>
<Click Handler="GridPanel1.save();" />
</Listeners>
</ext:Button>
</form>
</body>
</html>
Originally Posted by
Daniil
Hi,
Please look at the simple example.
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)
{
this.Store1.DataSource = new object[]
{
new object[] { "test1", "test2", "test3" },
new object[] { "test4", "test5", "test6" },
new object[] { "test7", "test8", "test9" },
};
this.Store1.DataBind();
}
}
protected void Store_BeforeStoreChanged(object sender, BeforeStoreChangedEventArgs e)
{
string jsonData = e.DataHandler.JsonData;
X.Msg.Alert("Saved", jsonData).Show();
}
</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 runat="server">
<title>Ext.Net Example</title>
</head>
<body>
<form runat="server">
<ext:ResourceManager runat="server" />
<ext:GridPanel ID="GridPanel1" runat="server" AutoHeight="true">
<Store>
<ext:Store
ID="Store1"
runat="server"
RefreshAfterSaving="None"
OnBeforeStoreChanged="Store_BeforeStoreChanged">
<Reader>
<ext:ArrayReader>
<Fields>
<ext:RecordField Name="test1" />
<ext:RecordField Name="test2" />
<ext:RecordField Name="test3" />
</Fields>
</ext:ArrayReader>
</Reader>
</ext:Store>
</Store>
<ColumnModel runat="server">
<Columns>
<ext:Column Header="Test1" DataIndex="test1">
<Editor>
<ext:TextField runat="server" />
</Editor>
</ext:Column>
<ext:Column Header="Test2" DataIndex="test2">
<Editor>
<ext:TextField runat="server" />
</Editor>
</ext:Column>
<ext:Column Header="Test3" DataIndex="test3">
<Editor>
<ext:TextField runat="server" />
</Editor>
</ext:Column>
</Columns>
</ColumnModel>
<Plugins>
<ext:EditableGrid runat="server" />
</Plugins>
</ext:GridPanel>
<ext:Button runat="server" Text="Save">
<Listeners>
<Click Handler="GridPanel1.save();" />
</Listeners>
</ext:Button>
</form>
</body>
</html>
Please see also the server side HandleChanges handler here:
https://examples1.ext.net/#/GridPanel/Update/AutoSave/