Hi, I try to use your example to dynamically add/remove editor and get this error:
this.field.msgTarget is null or not an object error. I'm new to the ext.net - could somebody help me?
Thanks,
Jenny
this is my code:
EditExample.aspx:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="EditExample.aspx.cs" Inherits="myApp.EditExample" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<%@ Register Assembly="Ext.Net" Namespace="Ext.Net" TagPrefix="ext" %>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<script type="text/javascript">
var setEditor = function (e) {
var column = e.grid.getColumnModel().columns[e.column],
ed = column.getCellEditor(e.row);
if (ed && (e.value != null || e.value != '')) {
ed.destroy();
}
else {
column.setEditor(new Ext.form.TextField());
}
}
</script>
</head>
<body>
<form id="form1" runat="server">
<ext:ResourceManager runat="server" />
<ext:Store ID="extStore" runat="server" >
<Reader>
<ext:JsonReader>
<Fields>
<ext:RecordField Name = "Name" />
<ext:RecordField Name = "Code" ></ext:RecordField>
<ext:RecordField Name = "Description" ></ext:RecordField>
</Fields>
</ext:JsonReader>
</Reader>
</ext:Store>
<div>
<ext:GridPanel ID="extGrd" runat="server" StripeRows="true" TrackMouseOver="true"
StoreID="extStore" Cls="x-grid-custom"
Height="250px" Layout="fit">
<ColumnModel ID="cmFC" runat="server">
<Columns>
<ext:Column ColumnID="Name" DataIndex="Name" Header="Name">
</ext:Column>
<ext:Column ColumnID="Code" DataIndex="Code" Header="Code">
</ext:Column>
<ext:Column ColumnID="Description" DataIndex="Description" Header="Description" Editable ="true" >
<Editor>
<ext:TextField ID="TextField1" runat="server"></ext:TextField>
</Editor>
</ext:Column>
</Columns>
</ColumnModel>
<Listeners>
<BeforeEdit Fn="setEditor" />
<Render Handler="this.getColumnModel().setEditable(0, true);" />
</Listeners>
<SelectionModel>
<ext:RowSelectionModel ID="RowSelectionModel1" runat="server" SingleSelect="true" MoveEditorOnEnter="true"/>
</SelectionModel>
<LoadMask ShowMask="true" />
</ext:GridPanel>
</div>
</form>
</body>
</html>
EditExample.aspx.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace myApp
{
public class info
{
public string Name { get; set; }
public string Code { get; set; }
public string Description { get; set; }
}
public partial class EditExample : System.Web.UI.Page
{
protected void Page_Load( object sender, EventArgs e )
{
List<info> thisInfo = new List<info>();
thisInfo.Add( new info { Code = "1", Description = "one", Name = "one Name" } );
thisInfo.Add( new info { Code = "2", Description = "two", Name = "two Names" } );
thisInfo.Add( new info { Code = "3", Description = "three", Name = "three Names" } );
thisInfo.Add( new info { Code = "4", Description = "four", Name = "four Names" } );
thisInfo.Add( new info { Code = "5", Description = "five", Name = "five Names" } );
thisInfo.Add( new info { Code = "6", Description = "six", Name = "six Names" } );
this.extStore.DataSource = thisInfo;
this.extStore.DataBind();
}
}
}
Originally Posted by
Daniil
Thanks.
Please see the 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)
{
Store store = this.GridPanel1.GetStore();
store.DataSource = new object[]
{
new object[] { "TextField", "text" },
new object[] { "NumberField", "10" },
new object[] { "ComboBox", "1" }
};
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 "TextField" :
column.setEditor(new Ext.form.TextField());
break
case "NumberField" :
column.setEditor(new Ext.form.NumberField());
break;
case "ComboBox" :
column.setEditor(new Ext.form.ComboBox({
displayField : "text",
mode : "local",
triggerAction: "all",
valueField: "value",
store : new Ext.data.SimpleStore({
fields : ["text", "value"],
data : [
["Item 1", "1"],
["Item 2", "2"],
["Item 3", "3"]
]
})
}));
break;
}
}
</script>
</head>
<body>
<form runat="server">
<ext:ResourceManager runat="server" />
<ext:GridPanel
ID="GridPanel1"
runat="server"
AutoHeight="true"
Width="210">
<Store>
<ext:Store runat="server">
<Reader>
<ext:ArrayReader>
<Fields>
<ext:RecordField Name="editor" />
<ext:RecordField Name="test" />
</Fields>
</ext:ArrayReader>
</Reader>
</ext:Store>
</Store>
<ColumnModel runat="server">
<Columns>
<ext:Column Header="Editor" DataIndex="editor" />
<ext:Column Header="Test" DataIndex="test" />
</Columns>
</ColumnModel>
<Listeners>
<BeforeEdit Fn="setEditor" />
<Render Handler="this.getColumnModel().setEditable(1, true);" />
</Listeners>
</ext:GridPanel>
</form>
</body>
</html>