M
Mike
Hi,
I am adding controls dynamically in a WebForm, but none of these controls' events fire. Here is the class code I am using. I have tried so many things, but nothing works :-(
namespace WebApplication1
{
using System;
using System.Data;
using System.Collections;
using System.Drawing;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.ComponentModel;
/// <summary>
/// Summary description for WebUserControl1.
/// </summary>
public class Tracking : System.Web.UI.WebControls.WebControl
{
private ArrayList arr = new ArrayList();
private System.Web.UI.WebControls.Table m_Table = new Table();
private System.Web.UI.WebControls.Button btn = new Button();
//private System.Web.UI.WebControls.Label lbl = new Label();
//private System.Web.UI.WebControls.Image img = new System.Web.UI.WebControls.Image();
//private System.Web.UI.WebControls.DropDownList lst = new DropDownList();
public void buildTable(TableTracking trk)
{
//m_Table.BorderStyle = BorderStyle.Solid;
//m_Table.BorderWidth = Unit.Pixel(2);
//m_Table.BorderColor = Color.DarkBlue;
System.Web.UI.WebControls.TableRow row = new TableRow();
System.Web.UI.WebControls.TableCell cell = new TableCell();
System.Web.UI.WebControls.Image img = new System.Web.UI.WebControls.Image();
if (trk.Editable==true)
{
//btn.Text = "<font face=Verdana size=1>" + "Edit Me";
btn.Text = "Edit";
img.ImageUrl = "Images/img_sec/edit_pencil.gif";
cell.Height = 5;
//cell.HorizontalAlign = HorizontalAlign.Right;
cell.Width = m_Table.Width;
cell.Controls.Add(img);
cell.Controls.Add(new LiteralControl(" "));
//cell.Controls.Add(new LiteralControl("<font face=Verdana size=1>"));
cell.Controls.Add(btn);
row.Cells.Add(cell);
m_Table.Rows.Add(row);
}
else
{
btn.Visible = false;
img.Visible = false;
}
m_Table.Width = trk.Width;
m_Table.Height = trk.Height;
}
public void buildItem(ArrayList items)
{
System.Web.UI.WebControls.TableRow row = new TableRow();
System.Web.UI.WebControls.TableCell cell = null;
//cell.BorderStyle = BorderStyle.Solid;
//cell.BorderWidth = Unit.Pixel(1);
//cell.BorderColor = Color.DarkBlue;
int currentRow = 0;
int previousRow = 0;
foreach (Item i in items)
{
currentRow = i.Row;
if (currentRow != previousRow && previousRow != 0)
{
m_Table.Rows.Add(row);
row = new TableRow();
}
cell = new TableCell();
cell.HorizontalAlign = HorizontalAlign.Center;
cell.Width = i.Width;
//cell.Height = Convert.ToString(i.Height);
if (i.Type == "Label")
{
System.Web.UI.WebControls.Label lbl = new Label();
cell.Controls.Add(new LiteralControl("<font style='FONT-WEIGHT: bold' face=Verdana size=1>"));
lbl.Text = (string)i.Content[0];
cell.Controls.Add(lbl);
}
else if (i.Type == "Image")
{
System.Web.UI.WebControls.Image img = new System.Web.UI.WebControls.Image();
img.ImageUrl = (string)i.Content[0];
cell.Controls.Add(img);
}
else if (i.Type == "DropDownList")
{
System.Web.UI.WebControls.DropDownList lst = new DropDownList();
arr.Add(lst);
for (int n=0; n<i.Content.Count; n++)
{
lst.Items.Add((string)i.Content[n]);
}
lst.Visible = false;
cell.Controls.Add(lst);
lst.SelectedIndexChanged+=new EventHandler(lst_SelectedIndexChanged);
}
row.Cells.Add(cell);
previousRow = i.Row;
}
m_Table.Rows.Add(row);
}
protected override void Render(HtmlTextWriter writer)
{
Controls.Clear();
Controls.Add(m_Table);
base.Render (writer);
}
private void Page_Load(object sender, System.EventArgs e)
{
if (Page.IsPostBack)
{
foreach(DropDownList lst in arr)
{
lst.Visible = true;
}
btn.Text = "Save";
}
}
#region Web Form Designer generated code
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: This call is required by the ASP.NET Web Form Designer.
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion
private void lst_SelectedIndexChanged(object sender, EventArgs e)
{
Console.WriteLine("OK");
}
}
}
This is how the control is set up in the Web Form:
<WEBAPPLICATION1:TRACKING id=trck1 runat=server></WEBAPPLICATION1:TRACKING>
Any idea on what could be wrong?
Thanks.
Mike
I am adding controls dynamically in a WebForm, but none of these controls' events fire. Here is the class code I am using. I have tried so many things, but nothing works :-(
namespace WebApplication1
{
using System;
using System.Data;
using System.Collections;
using System.Drawing;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.ComponentModel;
/// <summary>
/// Summary description for WebUserControl1.
/// </summary>
public class Tracking : System.Web.UI.WebControls.WebControl
{
private ArrayList arr = new ArrayList();
private System.Web.UI.WebControls.Table m_Table = new Table();
private System.Web.UI.WebControls.Button btn = new Button();
//private System.Web.UI.WebControls.Label lbl = new Label();
//private System.Web.UI.WebControls.Image img = new System.Web.UI.WebControls.Image();
//private System.Web.UI.WebControls.DropDownList lst = new DropDownList();
public void buildTable(TableTracking trk)
{
//m_Table.BorderStyle = BorderStyle.Solid;
//m_Table.BorderWidth = Unit.Pixel(2);
//m_Table.BorderColor = Color.DarkBlue;
System.Web.UI.WebControls.TableRow row = new TableRow();
System.Web.UI.WebControls.TableCell cell = new TableCell();
System.Web.UI.WebControls.Image img = new System.Web.UI.WebControls.Image();
if (trk.Editable==true)
{
//btn.Text = "<font face=Verdana size=1>" + "Edit Me";
btn.Text = "Edit";
img.ImageUrl = "Images/img_sec/edit_pencil.gif";
cell.Height = 5;
//cell.HorizontalAlign = HorizontalAlign.Right;
cell.Width = m_Table.Width;
cell.Controls.Add(img);
cell.Controls.Add(new LiteralControl(" "));
//cell.Controls.Add(new LiteralControl("<font face=Verdana size=1>"));
cell.Controls.Add(btn);
row.Cells.Add(cell);
m_Table.Rows.Add(row);
}
else
{
btn.Visible = false;
img.Visible = false;
}
m_Table.Width = trk.Width;
m_Table.Height = trk.Height;
}
public void buildItem(ArrayList items)
{
System.Web.UI.WebControls.TableRow row = new TableRow();
System.Web.UI.WebControls.TableCell cell = null;
//cell.BorderStyle = BorderStyle.Solid;
//cell.BorderWidth = Unit.Pixel(1);
//cell.BorderColor = Color.DarkBlue;
int currentRow = 0;
int previousRow = 0;
foreach (Item i in items)
{
currentRow = i.Row;
if (currentRow != previousRow && previousRow != 0)
{
m_Table.Rows.Add(row);
row = new TableRow();
}
cell = new TableCell();
cell.HorizontalAlign = HorizontalAlign.Center;
cell.Width = i.Width;
//cell.Height = Convert.ToString(i.Height);
if (i.Type == "Label")
{
System.Web.UI.WebControls.Label lbl = new Label();
cell.Controls.Add(new LiteralControl("<font style='FONT-WEIGHT: bold' face=Verdana size=1>"));
lbl.Text = (string)i.Content[0];
cell.Controls.Add(lbl);
}
else if (i.Type == "Image")
{
System.Web.UI.WebControls.Image img = new System.Web.UI.WebControls.Image();
img.ImageUrl = (string)i.Content[0];
cell.Controls.Add(img);
}
else if (i.Type == "DropDownList")
{
System.Web.UI.WebControls.DropDownList lst = new DropDownList();
arr.Add(lst);
for (int n=0; n<i.Content.Count; n++)
{
lst.Items.Add((string)i.Content[n]);
}
lst.Visible = false;
cell.Controls.Add(lst);
lst.SelectedIndexChanged+=new EventHandler(lst_SelectedIndexChanged);
}
row.Cells.Add(cell);
previousRow = i.Row;
}
m_Table.Rows.Add(row);
}
protected override void Render(HtmlTextWriter writer)
{
Controls.Clear();
Controls.Add(m_Table);
base.Render (writer);
}
private void Page_Load(object sender, System.EventArgs e)
{
if (Page.IsPostBack)
{
foreach(DropDownList lst in arr)
{
lst.Visible = true;
}
btn.Text = "Save";
}
}
#region Web Form Designer generated code
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: This call is required by the ASP.NET Web Form Designer.
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion
private void lst_SelectedIndexChanged(object sender, EventArgs e)
{
Console.WriteLine("OK");
}
}
}
This is how the control is set up in the Web Form:
<WEBAPPLICATION1:TRACKING id=trck1 runat=server></WEBAPPLICATION1:TRACKING>
Any idea on what could be wrong?
Thanks.
Mike