如何点击按钮生成控件

quboxue 2009-03-22 10:24:05
如何点击按钮生成控件,也就是点击一次按钮生成一个控件,而且控件的id自动增长,我做了一个但是只能得到一个控件

我的代码是这样的

click_num++;
FileUpload pic_up = new FileUpload();
pic_up.ID = "tupian" + click_num;
div_add_pic.Controls.Add(pic_up);
...全文
180 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
lqw718106 2009-06-30
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 stg609 的回复:]
那你可以用一个ViewState来保存你的click_num,
protected void Page_Load(object sender, EventArgs e)
    {
        if(!IsPostBack)
        {
            ViewState["click_num"]=0;
        }
       
        int j=(int)ViewState["click_num"];
        for (int i = 1; i < j; i++)
        {
            div_add_pic.Controls.Add(pic_up[i]);
        }
        ViewState["click_num"]=j+1;
}
[/Quote]

这个方法貌似对我目前的问题有用哦
http://topic.csdn.net/u/20090630/10/55a46b38-1213-4434-86cd-53dea0f57497.html?seed=1647377247&r=58050881#r_58050881
quboxue 2009-03-23
  • 打赏
  • 举报
回复
如果要是动态数组的话,怎么办,动态数组里面能存储对象吗?
bbqbin 2009-03-22
  • 打赏
  • 举报
回复
我是用js 实现
stg609 2009-03-22
  • 打赏
  • 举报
回复
那你可以用一个ViewState来保存你的click_num,
protected void Page_Load(object sender, EventArgs e)
{
if(!IsPostBack)
{
ViewState["click_num"]=0;
}

int j=(int)ViewState["click_num"];
for (int i = 1; i < j; i++)
{
div_add_pic.Controls.Add(pic_up[i]);
}
ViewState["click_num"]=j+1;
}
AuC 2009-03-22
  • 打赏
  • 举报
回复
一般用楼上的
quboxue 2009-03-22
  • 打赏
  • 举报
回复
private static FileUpload[] pic_up = new FileUpload[100];
protected void Page_Load(object sender, EventArgs e)
{
int j=int.Parse(h1.Value);
for (int i = 1; i < j; i++)
{
div_add_pic.Controls.Add(pic_up[i]);
}
}

我这样做勉强成功了,其中h1是一个隐藏按钮。只是最多只能生成100个控件,而且人家要是一次都没点,也占用了100个FileUpload[] 内存空间,大家有没有更好的办法啊?别告诉我用客户端的,我原来用过,很麻烦的
stg609 2009-03-22
  • 打赏
  • 举报
回复
这样是不行的.
根据asp.net页面生存周期,当你提交表单的时候,页面在服务器端其实又重新生成了然后在发还给浏览器端.
也就是说你第一次点击按钮提交后,服务器端会生成一个fileuplaod输出到浏览器端.当你第二次再点击按钮后,服务器端首先会重新生成页面,这样你第一次添加的按钮就消失了.因此你再怎么样点击按钮,都只能生成一个控件.


你可以利用js在客户端生成按钮.
phper2008 2009-03-22
  • 打赏
  • 举报
回复
如果你是要自动添加上传输入框,建议你用客户端的 input type="file"
quboxue 2009-03-22
  • 打赏
  • 举报
回复
private static FileUpload[] pic_up = new FileUpload[10];

这样设置后也不行

听说是.net机制的问题,不知道怎么回事,大家帮我啊!
飞飞虫2015 2009-03-22
  • 打赏
  • 举报
回复
up
quboxue 2009-03-22
  • 打赏
  • 举报
回复
代码改成了这样也不行,就出来一个控件

click_num++;
FileUpload[] pic_up = new FileUpload[10];
pic_up[click_num]=new FileUpload();
pic_up[click_num].ID = "tupian" + click_num;
div_add_pic.Controls.Add(pic_up[click_num])
quboxue 2009-03-22
  • 打赏
  • 举报
回复
private static int click_num = 0;

我已经定义了全局变量
artwl_cn 2009-03-22
  • 打赏
  • 举报
回复
学习,顶!
zpcoder 2009-03-22
  • 打赏
  • 举报
回复
或者说先在页面放一个 Hidden 控件,把值设成1


再写*.cs代码

FileUpload pic_up = new FileUpload();
pic_up.ID = "tupian" + hidden1.Value;
hidden1.Value=Convert.ToString(int.Parse(hidden1.Value)+1);
div_add_pic.Controls.Add(pic_up);

试试
zpcoder 2009-03-22
  • 打赏
  • 举报
回复
定义一个全局的 int click_num=0;

62,041

社区成员

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

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

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

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