Hi,
I can suggest the following solution.
Example View
<%@ 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
{
test = "test1"
},
new
{
test = "test2"
}
};
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 runat="server">
<title>Ext.Net.MVC Example</title>
<script type="text/javascript">
var onSuccess = function (grid, result) {
var store = grid.getStore();
grid.addColumn(Ext.create("Ext.grid.column.Column", Ext.decode(result.column)));
store.addField(result.field);
//test
store.loadData([{
test : "test1",
someDataIndex : "new1"
}, {
test : "test2",
someDataIndex : "new2"
}]);
};
</script>
</head>
<body>
<ext:ResourceManager runat="server" />
<ext:GridPanel ID="GridPanel1" runat="server" AutoHeight="true">
<Store>
<ext:Store runat="server">
<Model>
<ext:Model runat="server">
<Fields>
<ext:ModelField Name="test" />
</Fields>
</ext:Model>
</Model>
</ext:Store>
</Store>
<ColumnModel runat="server">
<Columns>
<ext:Column runat="server" Text="Test" DataIndex="test" />
</Columns>
</ColumnModel>
</ext:GridPanel>
<ext:Button runat="server" Text="Add column">
<DirectEvents>
<Click Url="/Test/AddColumn" Success="onSuccess(#{GridPanel1}, result.result);" />
</DirectEvents>
</ext:Button>
</body>
</html>
Examples Controller Action
public ActionResult AddColumn()
{
Column c = new Column()
{
Text = "New",
DataIndex = "someDataIndex"
};
AjaxResult r = new AjaxResult();
r.Result = new
{
column = c.ToConfig(),
field = "someDataIndex"
};
return r;
}