asp.net后台动态生成控件,出现问题

ckpbed 2009-07-03 06:21:56
我的开发环境是vs2008.

在页面上上用了ajax控件。

希望在页面上通过点击按钮无刷新增加一个控件。

我的代码如下。
button1是这个增加控件的按钮。
protected void Button1_Click(object sender, EventArgs e)
{
TextBox tb = new TextBox();
tb.ID = "txt" + (Panel1.Controls.Count + 1).ToString();
tb.Text = tb.ID;
tb.Controls.Add(new LiteralControl("test"));
Button bt = new Button();
bt.ID = "btn" + (Panel1.Controls.Count + 1).ToString();
bt.Text = bt.ID;
bt.Click += new System.EventHandler(Button1_Click);
Panel1.Controls.Add(tb);
Panel1.Controls.Add(bt);
ViewState[tb.ID] = true;
ViewState[bt.ID] = true;
Label1.Text = Panel1.Controls.Count.ToString();
foreach(Control ctl in Panel1.Controls)
{
Label1.Text = Label1.Text + ctl.GetType().FullName + " | ";
}
}

现在的问题是:
点击botton1后,界面上增加了一个textbox和一个botton。点击新增加的botton时,新增控件消失。不能每点击botton1一次,增加一次控件。

查看页面的源码,html里没有新增的控件html代码。

搜索了后,有说是postback后,没有加载这个页面的问题。

实在是没搞明白,希望有人能解开这个迷津。
...全文
232 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
ckpbed 2009-07-04
  • 打赏
  • 举报
回复
谢谢 !
Geogehu 2009-07-03
  • 打赏
  • 举报
回复
这里发言,表示您接受了CSDN社区的用户行为准则。
qq196260188 2009-07-03
  • 打赏
  • 举报
回复
看一下ajaxpro吧,,几个小时就可以学会了
bwangel 2009-07-03
  • 打赏
  • 举报
回复
大多数所谓的动态添加控件的需求都是可用更简单的办法的。

比说LZ说的留言回复,其实用一个最原始的Repeater控件就可以搞定了
Repeater里再放你打算动态增加的东西
oktell 2009-07-03
  • 打赏
  • 举报
回复
3楼说得对。我的做法是:先把动态生成的控件塞入ArrayList中,然后在Page_Load事件中将ArrayList中的控件取出并加载。
ckpbed 2009-07-03
  • 打赏
  • 举报
回复
我用了panel作为容器,应该也是一样的。
bwangel 2009-07-03
  • 打赏
  • 举报
回复
要先有PlaceHolder控件,才能在PlaceHolder中加别的控件
ckpbed 2009-07-03
  • 打赏
  • 举报
回复
你点击了一次就会调用一次Page_Load(),你要把控件存起来。光存ID没用。

怎么存起来?

能否详细说下
imshi 2009-07-03
  • 打赏
  • 举报
回复
动态生成控件确实不好搞,要考虑的问题较多,页面重新载入过程中要重新生成这个控件的,肯定没有生成.
你不妨用JS实现这个功能,还不需要回发,性能也有很大提高.
chrisming999 2009-07-03
  • 打赏
  • 举报
回复
用会话变量和应用程变量试试
爱德华马 2009-07-03
  • 打赏
  • 举报
回复
你点击了一次就会调用一次Page_Load(),你要把控件存起来。光存ID没用。
ckpbed 2009-07-03
  • 打赏
  • 举报
回复
因为我需要的这个控件如同是论坛回复信息一样,不确定有多少个。所以隐藏的话,不合乎要求。
chen_ya_ping 2009-07-03
  • 打赏
  • 举报
回复
说实话,动态生成控件真的不好搞。你可以先把要动态生成的控件写好隐藏起来。到时候显示就可以了,效果是一样的。
ASP.NET学习大全,包括以下文档: GridView导出excel 小山的TreeView数据绑定方法 ADO.NET在开发中的部分使用方法和技巧.txt ADO.NET中的视图和过滤器.doc ASP .NET - ArrayList对象.txt asp.net 2.0中TREEVIEW中动态增加结点.txt Asp.net 实现验证码功能的Web控件.txt asp.net常用的javascript经典例子.doc asp.net常用函数表.doc ASP.NET程序中常用的三十三种代码.doc ASP.NET程序中实现校验码图像生成.txt ASP.NET导出EXCEL类.txt ASP.NET导出数据到Excel.txt ASP.NET对IIS中的虚拟目录进行操作.txt asp.net里导出excel表方法汇总.txt ASP.NET文件上传程序的源代码.txt Asp.Net中文本换行.txt ASPNET中实现在线用户检测(使用后台守护线程).txt C# 读取计算机CPU,HDD信息.txt DataGrid导出EXCEL的几个方法(WebControl).txt DataGrid的打印预览和打印.txt GridView排序.txt GRID控件删除之前确认.txt javascript小技巧.doc MVC在Web系统中的模式与应用.doc NET中各种数据库连接大全.doc Treeview控件2.0与ACCESS数据库.txt TreeView使用集锦.txt Web Service服务.doc WEB中实现打印预览.txt 根据用户名生成注册码的算法.txt 关于asp.net导出Excel.txt 汉字转拼音缩写.txt 将DataGrid数据写入Excel文件.txt 揭开ASP.NET中Cookie编程的奥秘.txt 利用TreeView控件动态生成无限级树.txt 实现一个Asp.net自定义Back控件.txt 使用XML创建Excel文档.txt 鼠标停留在GridView某一行时颜色改变.txt 微软提供的加密方法.txt 无法破解的软件注册码算法.txt 用Asp.net实现简单的文字水印.txt 用ASP.Net写一个发送ICQ信息的程序.txt 在ASP.NET中使用Treeview控件和XML.txt

62,073

社区成员

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

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

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

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