动态创建控件问题,请高手指教

yzwgh 2004-12-31 09:36:29
我在页面上放两个按钮,一个用于创建两个TextBox,一个用于显示输入到TextBox里的值,但是怎么也找不到动态创建的TextBox,始终在Button2_Click处报错,代码如下:
private void Button1_Click(object sender, System.EventArgs e)
{
t=new TextBox();
t.ID="t1";
t.AutoPostBack=true;
this.Controls[1].Controls.Add(t);
t=new TextBox();
t.ID="t2";
t.AutoPostBack=true;
this.Controls[1].Controls.Add(t);
}

private void Button2_Click(object sender, System.EventArgs e)
{
string s=((TextBox)this.Controls[1].FindControl("t1")).Text;
string ss=((TextBox)this.Controls[1].FindControl("t2")).Text;
Response.Write(s);
Response.Write("<br>");
Response.Write(ss);
}
...全文
153 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Technologytomorrow 2004-12-31
  • 打赏
  • 举报
回复
up
Proyang 2004-12-31
  • 打赏
  • 举报
回复
每次page_load 都要动态创建控件,你才能在函数里找到
ljb198102 2004-12-31
  • 打赏
  • 举报
回复
提示:

WebForm中是不允许客户端控制添加服务器控件的
除非你在服务器端不再操作这个控件(关系到系统控件的创建和试图还原的问题)

解决方案:
可以在Page_Load或者覆盖发生此事件之前的函数来动态实现
比如
protected override void CreateChildControls()
{
base.CreateChildControls ();
//在此处依据条件添加你的控件
//。。。。
}
xuandme000 2004-12-31
  • 打赏
  • 举报
回复
我的理解:
如果你不在pageload里加的话,那么每次页面初始化的时候都是没有加控件前的状态,所以取不到值
还是试试"老朽"的方法吧!
dotAge 2004-12-31
  • 打赏
  • 举报
回复
从REQUEST.FORM里取值吧。
santax 2004-12-31
  • 打赏
  • 举报
回复
我试了一下 好像把t=new TextBox();
t.ID="t1";
t.AutoPostBack=true;
this.Controls[1].Controls.Add(t);
t=new TextBox();
t.ID="t2";
t.AutoPostBack=true;
this.Controls[1].Controls.Add(t);
写在pageload函数里就可以
yzwgh 2004-12-31
  • 打赏
  • 举报
回复
可以看到TextBox,也可以输入内容
gyhongjun 2004-12-31
  • 打赏
  • 举报
回复
联系我的QQ:936620

62,039

社区成员

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

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

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

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