Apr 07, 2011, 8:48 PM
Toolbar and GridPanel created dynamically generates error when added to a Panel
Hi, I used an example posted earlier on this forum to create a dynamically gridpanel with a toolbar and a button dynamically created.
When I click the button, the click event (Click_Event) runs normally. But when I put the gridPanel in a panel using "grid.AddTo (panel1)", click the button causes the following exception:
Why this occurs?!
Thanks!
When I click the button, the click event (Click_Event) runs normally. But when I put the gridPanel in a panel using "grid.AddTo (panel1)", click the button causes the following exception:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WebApplication8.WebForm1" %>
<%@ Import Namespace="System.Data"%>
<%@ Register Assembly="Ext.Net" Namespace="Ext.Net" TagPrefix="ext" %>
<!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></title>
<script runat="server">
private static DataTable GetTestDataTable(int mode)
{
DataTable dt = new DataTable();
//for example, for first grid will be two columns, for second - four columns
int count = mode == 1 ? 2 : 4;
DataColumn dc = new DataColumn("ID") { Caption = "ID" };
dt.Columns.Add(dc);
for (int i = 0; i < count; i++)
{
string name = string.Format("Column{0}_{1}", mode, i);
dc = new DataColumn(name) { Caption = name };
dt.Columns.Add(dc);
}
//add 10 rows
int timeStamp = DateTime.Now.Second;
string cellValue = "Value" + timeStamp;
for (int i = 0; i < 10; i++)
{
object[] values = mode == 1 ? new object[] { i, cellValue, cellValue } :
new object[] { i, cellValue, cellValue, cellValue, cellValue };
dt.Rows.Add(values);
}
return dt;
}
protected void Page_Load(object sender, EventArgs e)
{
int mode = int.Parse(this.Request["grid"]??"1");
DataTable dt = GetTestDataTable(mode);
Store store = new Store {ID = "StoreMovimenti"};
this.Page.Form.Controls.Add(store);
store.Reader.Add(new JsonReader());
GridPanel grid = new GridPanel
{
ID = "GridPanelMovimenti",
AutoScroll = true,
AutoHeight = true,
StoreID = store.ID,
StripeRows = true,
Header = false,
AutoWidth = true
};
grid.TopBar.Add(GetToolbar());
grid.LoadMask.ShowMask = true;
grid.LoadMask.Msg = "Loading...";
this.Page.Form.Controls.Add(grid);
Ext.Net.PagingToolbar pager = new Ext.Net.PagingToolbar { PageSize = 10 };
grid.BottomBar.Add(pager);
int _n = 0;
foreach (DataColumn column in dt.Columns)
{
// ADD Column to the Reader
if (_n == 0)
{
((Ext.Net.JsonReader)store.Reader[0]).IDProperty = column.ColumnName;
}
store.Reader[0].Fields.Add(new Ext.Net.RecordField(column.Caption));
//// ADD Column to columns collection
Ext.Net.Column _col = new Ext.Net.Column
{
ColumnID = ("CLM_" + _n.ToString()),
Header = column.Caption,
DataIndex = column.Caption
};
grid.ColumnModel.Columns.Add(_col);
_n++;
}
----->> grid.AddTo(panel1);
store.DataSource = dt;
store.DataBind();
}
public Toolbar GetToolbar()
{
Toolbar toolBar;
Ext.Net.Button btnAdd;
#region Botão adiconar
btnAdd = new Ext.Net.Button();
btnAdd.Icon = Icon.Add;
btnAdd.StandOut = true;
btnAdd.DirectClick += Click_Event;
#endregion
toolBar = new Toolbar();
toolBar.Items.Add(btnAdd);
return toolBar;
}
protected void Click_Event(object sender, DirectEventArgs e)
{
//Some code;
}
</script>
</head>
<body>
<form id="form1" runat="server">
<ext:ResourceManager ID="ResourceManager1" runat="server">
</ext:ResourceManager>
<ext:Panel ID="panel1" runat="server"></ext:Panel>
</form>
</body>
</html>
Why this occurs?!
Thanks!
Last edited by Wellington Caetano; Apr 08, 2011 at 8:25 PM.