Oct 30, 2012, 4:21 PM
Hi Daniil,
Can you help me get on the right track here please? I guess I'm missing some configuration because my code sample doesn't work.
Can you help me get on the right track here please? I guess I'm missing some configuration because my code sample doesn't work.
<%@ 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" },
new object[] { "id5", "Custom" },
};
store.DataBind();
Store store2 = this.Store2;
store2.DataSource = new object[]
{
new object[] { "1", "Test1" },
new object[] { "2", "Test2" },
new object[] { "3", "Test3" },
new object[] { "4", "Test4" },
new object[] { "5", "Test5" },
};
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 id="Head1" 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;
case "Custom":
column.setEditor(new Ext.net.GridPanel(
{
id: "GridPanel2",
columnPlugins: [1],
renderTo: "GridPanel2_Container",
autoHeight: true,
store: Store2,
selectionMemory: false,
cm: this.ColumnModel2 = new Ext.grid.ColumnModel(
{
proxyId: "ColumnModel2",
columns: [
{ dataIndex: "data", header: "Value" },
new Ext.net.CommandColumn(
{
hideable: false,
width: 25,
commands: [{ xtype: "tbbutton", command: "Pick", iconCls: "icon-accept"}]
})
]
}
)
}
)
);
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 id="Form1" runat="server">
<ext:ResourceManager ID="ResourceManager1" runat="server" />
<ext:Store ID="Store2" runat="server">
<Reader>
<ext:ArrayReader>
<Fields>
<ext:RecordField Name="id" />
<ext:RecordField Name="data" />
</Fields>
</ext:ArrayReader>
</Reader>
</ext:Store>
<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 ID="Store1" 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 ID="ColumnModel1" 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>
<div id="GridPanel2_Container">
</div>
</form>
</body>
</html>