动态控制事件 [英] Dynamic Controls events
问题描述
我已经添加了按钮,其他一些是动态的,如下所示:
我想要按钮的事件。目前它给我错误多个控件具有相同的ID'xx'找到了..所以如何处理这种情况...假设我只创建了一个按钮,那么它的事件将成功地为handel。多个按钮出现问题...
for(int i = 0; i< dt1.Rows.Count-3; i ++)
{
pnlTextBox = new Panel();
pnlTextBox.ID =pnlTextBox+ i.ToString();
pnlTextBox。 CssClass =tagpanel;
TextBox txt = new TextBox();
txt.ID = (i + 1).ToString();
txt.CssClass =txtb;
txt.Text = dt1.Rows [i] [3] .ToString( );
txt.Enabled = false;
txt.AutoPostBack = true;
ImageButton img = new ImageButton();
img.ID =img_+ i.ToString();
img.Click + = new ImageClickEventHandler(img_Click);
img.ImageUrl =〜/ images / TagClose.png;
img.CssClass =icons;
< br $> b $ b
Button Btn = new Button();
Btn.ID =Btn_+ i.ToString();
Btn.Text =Save;
Btn.CssClass =btnCss;
Btn.Click + = new EventHandler(Btn_test);
Literal ltbr1 = new Literal();
ltbr1.Text =
;
Literal ltbr = new Literal();
ltbr.Text =
;
标签lbl =新标签();
lbl.ID = i.ToString();
lbl.CssClass =lblCss;
lbl.Text = dt1.Rows [i] [0] .ToString(); < br $>
pnlTextBox.Controls.Add(txt);
pnlTextBox.Controls.Add(img);
pnlTextBox.Controls.Add(ltbr1);
pnlTextBox.Controls.Add(lbl);
}
I have added buttons and some others conrols dynamically as follows:
I want to handel events of button. Currently it gives me the error "Multiple Controls with same ID 'xx' found"..So how to deals with this situation...suppose i have create only one button then its event will be handel successfully. Problems occurs with multiple buttons...
for (int i = 0; i < dt1.Rows.Count-3; i++)
{
pnlTextBox = new Panel();
pnlTextBox.ID = "pnlTextBox" + i.ToString();
pnlTextBox.CssClass = "tagpanel";
TextBox txt = new TextBox();
txt.ID = (i + 1).ToString();
txt.CssClass = "txtb";
txt.Text = dt1.Rows[i][3].ToString();
txt.Enabled = false;
txt.AutoPostBack = true;
ImageButton img = new ImageButton();
img.ID = "img_" + i.ToString();
img.Click += new ImageClickEventHandler(img_Click);
img.ImageUrl = "~/images/TagClose.png";
img.CssClass = "icons";
Button Btn = new Button();
Btn.ID = "Btn_" + i.ToString();
Btn.Text = "Save";
Btn.CssClass = "btnCss";
Btn.Click += new EventHandler(Btn_test);
Literal ltbr1 = new Literal();
ltbr1.Text = "
";
Literal ltbr = new Literal();
ltbr.Text = "
";
Label lbl = new Label();
lbl.ID = i.ToString();
lbl.CssClass = "lblCss";
lbl.Text = dt1.Rows[i][0].ToString();
pnlTextBox.Controls.Add(txt);
pnlTextBox.Controls.Add(img);
pnlTextBox.Controls.Add(ltbr1);
pnlTextBox.Controls.Add(lbl);
}
推荐答案
看来你已经定了将文本框ID转换为i + 1并将控件标记为i。在第二次传递后你将有txt.ID = 1和lbl.ID = 1.在前面添加一个前缀,就像你正在使用按钮控件一样。
如果这有帮助,请花时间接受解决方案。谢谢。
It seems you're setting Textbox IDs to i+1 and label controls to i. After second pass you'll have txt.ID = 1 and lbl.ID = 1. Add a prefix in front like you're doing with the button control.
If this helps please take time to accept the solution. Thank you.
这篇关于动态控制事件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!