小弟是初学,只弄了如何在动态容器中增加控件,但不懂如何获取容器控件中的值,本人想获取ConNum、ConSize及ConWeight三个控件的值,搜了些方法都不太适用,请教各位大虾多帮忙。
PlaceHolder代码如下:
protected void Button2_Click(object sender, EventArgs e)
{
try
{
NumberCon.Text = TextBox4.Text;
int num = int.Parse(TextBox4.Text);
for (int i = 1; i <= num; i++)
{
Label l = new Label();
l.ID = "Label" + i.ToString();
l.Text = i.ToString();
TextBox t = new TextBox();
t.ID = "ConNum" + i.ToString();
DropDownList d = new DropDownList();
d.ID = "ConSize" + i.ToString();
d.Items.Add("40");
d.Items.Add("20");
d.Items.Add("45");
Label z = new Label();
z.Text = "重量";
TextBox w = new TextBox();
w.ID = "ConWeight" + i.ToString();
PlaceHolder1.Controls.Add(l);
PlaceHolder1.Controls.Add(t);
PlaceHolder1.Controls.Add(d);
PlaceHolder1.Controls.Add(z);
PlaceHolder1.Controls.Add(w);
PlaceHolder1.Controls.Add(new LiteralControl("<br>"));
}
}
catch (Exception el)
{
PlaceHolder1.Controls.Add(new LiteralControl(el.Message));
}
}
PlaceHolder代码如下:
protected void Button2_Click(object sender, EventArgs e)
{
try
{
NumberCon.Text = TextBox4.Text;
int num = int.Parse(TextBox4.Text);
for (int i = 1; i <= num; i++)
{
Label l = new Label();
l.ID = "Label" + i.ToString();
l.Text = i.ToString();
TextBox t = new TextBox();
t.ID = "ConNum" + i.ToString();
DropDownList d = new DropDownList();
d.ID = "ConSize" + i.ToString();
d.Items.Add("40");
d.Items.Add("20");
d.Items.Add("45");
Label z = new Label();
z.Text = "重量";
TextBox w = new TextBox();
w.ID = "ConWeight" + i.ToString();
PlaceHolder1.Controls.Add(l);
PlaceHolder1.Controls.Add(t);
PlaceHolder1.Controls.Add(d);
PlaceHolder1.Controls.Add(z);
PlaceHolder1.Controls.Add(w);
PlaceHolder1.Controls.Add(new LiteralControl("<br>"));
}
}
catch (Exception el)
{
PlaceHolder1.Controls.Add(new LiteralControl(el.Message));
}
}
protected void Button3_Click(object sender, EventArgs e)
{
TextBox ans;
for (int i = 0; i < Convert.ToInt32(this.NumberCon.Text); i++)
{
ans = (TextBox)PlaceHolder1.FindControl("ConNum " + (i + 1));
ListBox1.Items.Add("12");
}
}
是ListBox1.Items.Add(ans.text);
http://topic.csdn.net/u/20110913/16/5F4DCF23-EF75-4F71-9939-F3F909AA8B3F.html#r_75509887web是无状态的,即使是asp.net也没有对动态增加的控件自动给你维系其状态,所以页面回发时你必须在page_load中去用代码来恢复上一次输出html时的原来的控件树架构(通常将控件的ID恢复),这样asp.net才会自动找到相同ID或者位置完全一样(同时类型也一样)的控件给你填写ViewState状态,这样才会有持续的界面、事件处理的效果。