Mar 03, 2015, 10:25 AM
[CLOSED] How to dynamically add either Combobox or DateField to Gridpanel Column Editor from code behind
Hi Team
The below example is not working in Ext3.X, can anyone do the need full please.
Your help is highly appreciable
Regards
Mohan
The below example is not working in Ext3.X, can anyone do the need full please.
Your help is highly appreciable
Regards
Mohan
<%@ 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 object[] { "id1", "DateField" },
new object[] { "id2", "ComboBox" },
new object[] { "id3", "DateField" },
new object[] { "id4", "ComboBox" },
};
store.DataBind();
}
}
protected void ComboBoxStore_RefreshData(object sender, StoreRefreshDataEventArgs e)
{
Store store = sender as Store;
string id = e.Parameters["id"];
store.DataSource = new object[]
{
new object[] { id + "_" + DateTime.Now.Second, "1" },
new object[] { id + "_" + DateTime.Now.Second, "2" }
};
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 Example</title>
<script type="text/javascript">
var setEditor = function (e) {
var column = e.grid.getColumnModel().columns[e.column],
ed = column.getCellEditor(e.row);
if (ed) {
ed.destroy();
}
switch (e.record.get("editor")) {
case "DateField" :
column.setEditor(new Ext.form.DateField());
break
case "ComboBox" :
column.setEditor(new Ext.form.ComboBox({
displayField : "text",
valueField: "value",
triggerAction: "all",
store : ComboBoxStore
}));
ComboBoxStore.on(
"beforeload",
function (store, options) {
options.params = {
id : e.record.data.id
}
},
null,
{
single : true
});
break;
}
};
var testRenderer = function (value) {
var record = ComboBoxStore.getById(value);
if (record) {
value = record.data.text;
} else {
value = Ext.util.Format.date(value, "Y-m-d");
}
return value;
};
</script>
</head>
<body>
<form runat="server">
<ext:ResourceManager runat="server" />
<ext:Store
ID="ComboBoxStore"
runat="server"
OnRefreshData="ComboBoxStore_RefreshData"
AutoLoad="false">
<Proxy>
<ext:PageProxy />
</Proxy>
<Reader>
<ext:ArrayReader IDProperty="value">
<Fields>
<ext:RecordField Name="text" />
<ext:RecordField Name="value" />
</Fields>
</ext:ArrayReader>
</Reader>
</ext:Store>
<ext:GridPanel
ID="GridPanel1"
runat="server"
AutoHeight="true"
Width="310">
<Store>
<ext:Store runat="server">
<Reader>
<ext:ArrayReader>
<Fields>
<ext:RecordField Name="id" />
<ext:RecordField Name="editor" />
<ext:RecordField Name="test" />
</Fields>
</ext:ArrayReader>
</Reader>
</ext:Store>
</Store>
<ColumnModel runat="server">
<Columns>
<ext:Column Header="ID" DataIndex="id" />
<ext:Column Header="Editor" DataIndex="editor" />
<ext:Column Header="Test" DataIndex="test">
<Renderer Fn="testRenderer" />
</ext:Column>
</Columns>
</ColumnModel>
<Listeners>
<BeforeEdit Fn="setEditor" />
<Render Handler="this.getColumnModel().setEditable(2, true);" />
</Listeners>
</ext:GridPanel>
</form>
</body>
</html>
Last edited by Daniil; Mar 13, 2015 at 8:40 AM.
Reason: [CLOSED]