如何遍历panel中的自动生成控件

yjdabc 2009-03-09 03:17:35
for (int i = 0; i < count; i++)
{
Label lb = new Label();
lb.ID = "lb" + i.ToString();
lb.Text = dt.Rows[i]["TrueName"].ToString() + " 的比例为:";
this.Panel1.Controls.Add(lb);

TextBox tb = new TextBox();
tb.ID = dt.Rows[i]["newsUser_ID"].ToString();
tb.Width = 60;
tb.Text = "0";
this.Panel1.Controls.Add(tb);
}

这是在Panel中根据数据库中的记录生成的TextBox和Label

请问我怎么把TextBox的值读取出来?
...全文
195 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
我姓区不姓区 2009-03-09
  • 打赏
  • 举报
回复
点击按钮之后,页面会PostBack,所以如果你把动态生成控件的代码放到if(!IsPostBack){}里面的话,那么页面回调之后将不会动态生成控件
zzxap 2009-03-09
  • 打赏
  • 举报
回复
[code=C#]

获取值
STRING stra=""
for (int k = 0; k <count-1; k++) {
string stra = "lb" + k.ToString;
TextBox TextBoxa = (TextBox)this.FindControl(stra);
TextBoxa.Text.Trim //获取值

stra+=TextBoxa.Text.Trim+' ';
}
[/CODE]
zzxap 2009-03-09
  • 打赏
  • 举报
回复
[code=C#]
for (int i = 0; i < count; i++)
{
Label lb = new Label();
lb.ID = 'lb' + i.ToString();
lb.Text = dt.Rows[i]["TrueName"].ToString() + " 的比例为:";
this.Panel1.Controls.Add(lb);

TextBox tb = new TextBox();
tb.ID = dt.Rows[i]["newsUser_ID"].ToString();
tb.Width = 60;
tb.Text = "0";
this.Panel1.Controls.Add(tb);
}
获取值
for (int k = count + 1; k <count; k++) {
string stra = "lb" + k.ToString;
TextBox TextBoxa = (TextBox)this.FindControl(stra);
TextBoxa.Text.Trim //获取值


}
[/CODE]
limpid_123 2009-03-09
  • 打赏
  • 举报
回复
up
lxf2000104 2009-03-09
  • 打赏
  • 举报
回复
protected void Page_Load(object sender, EventArgs e)
{
for (int i = 0; i < 10; i++)
{
Label lb = new Label();
lb.ID = "lb" + i.ToString();
lb.Text = i.ToString() + " 的比例为:";
this.Panel1.Controls.Add(lb);

TextBox tb = new TextBox();
tb.ID = "txt"+i.ToString();
tb.Width = 60;
tb.Text = "0";
this.Panel1.Controls.Add(tb);
}

}
protected void Button1_Click(object sender, EventArgs e)
{
string strRet = "";
foreach (Control c in this.Panel1.Controls)
{

if (c.GetType().ToString() == "System.Web.UI.WebControls.TextBox")
{
TextBox txt = (TextBox)c;
strRet = strRet + txt.Text; ;
}
}
txtResult.Text = strRet;
}
阿非 2009-03-09
  • 打赏
  • 举报
回复
放在哪 是表示 页面加载就 生成,不考虑页面是否回发。
yjdabc 2009-03-09
  • 打赏
  • 举报
回复
我把生成代码放到
protected void Page_Load(object sender, EventArgs e)
{
这里
if (!IsPostBack)
{}
}
前面就好使了,请问这是为什么?
阿非 2009-03-09
  • 打赏
  • 举报
回复
你看下顺序 是在添加之后 运行的 上段代码么?
yjdabc 2009-03-09
  • 打赏
  • 举报
回复
不对啊
foreach (Control tt in this.Panel1.Controls)
{
TextBox txt = tt as TextBox;
if (txt != null)
{
perCount += Convert.ToDecimal(((TextBox)tt).Text.Trim());
sb.Append(tt.ID);
sb.Append(":");
sb.Append(((TextBox)tt).Text.Trim().ToString());
sb.Append(",");
}
}

我F10跟了一下,Panel1.Controls.count = 1
而我至少在Panel里面放进去10个控件,
这是怎么回事???
Teng_s2000 2009-03-09
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 2002pine 的回复:]
protected void Page_Load(object sender, EventArgs e)
{
int count = 10;
for (int i = 0; i < count; i++)
{
Label lb = new Label();
lb.ID = "lb" + i.ToString();
lb.Text = " 的比例为:";
this.Panel1.Controls.Add(lb);

TextBox tb = new TextBox();
tb.ID = "txty" + i.ToString();

[/Quote]
哈哈,读错了,把ID给读出来!
阿非 2009-03-09
  • 打赏
  • 举报
回复

using System.Collections.Generic;


List<string> l = new List<string>();
foreach(Control c in this.Panel1.Controls)
{
TextBox txt = c as TextBox;
if (txt!=null)
{
l.Add(txt.Text);
}
}



2002pine 2009-03-09
  • 打赏
  • 举报
回复
protected void Page_Load(object sender, EventArgs e)
{
int count = 10;
for (int i = 0; i < count; i++)
{
Label lb = new Label();
lb.ID = "lb" + i.ToString();
lb.Text = " 的比例为:";
this.Panel1.Controls.Add(lb);

TextBox tb = new TextBox();
tb.ID = "txty" + i.ToString();
tb.Width = 60;
tb.Text = "0";
this.Panel1.Controls.Add(tb);
}

}


protected void Button1_Click(object sender, EventArgs e)
{
foreach (Control c in Panel1.Controls)
{
Response.Write(c.ID);
}
}

62,268

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧