如何点击按钮生成控件,也就是点击一次按钮生成一个控件,而且控件的id自动增长,我做了一个但是只能得到一个控件我的代码是这样的click_num++;
FileUpload pic_up = new FileUpload();
pic_up.ID = "tupian" + click_num;
div_add_pic.Controls.Add(pic_up);

解决方案 »

  1.   

    定义一个全局的 int click_num=0;
      

  2.   

    或者说先在页面放一个 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);试试
      

  3.   

    private static int click_num = 0;我已经定义了全局变量
      

  4.   

    代码改成了这样也不行,就出来一个控件          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])
      

  5.   

    private static FileUpload[] pic_up = new FileUpload[10];这样设置后也不行听说是.net机制的问题,不知道怎么回事,大家帮我啊!
      

  6.   

    如果你是要自动添加上传输入框,建议你用客户端的 input type="file"
      

  7.   

    这样是不行的.
    根据asp.net页面生存周期,当你提交表单的时候,页面在服务器端其实又重新生成了然后在发还给浏览器端.
    也就是说你第一次点击按钮提交后,服务器端会生成一个fileuplaod输出到浏览器端.当你第二次再点击按钮后,服务器端首先会重新生成页面,这样你第一次添加的按钮就消失了.因此你再怎么样点击按钮,都只能生成一个控件.
    你可以利用js在客户端生成按钮.
      

  8.   

    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[] 内存空间,大家有没有更好的办法啊?别告诉我用客户端的,我原来用过,很麻烦的
      

  9.   

    那你可以用一个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;
    }
      

  10.   


    这个方法貌似对我目前的问题有用哦 
    http://topic.csdn.net/u/20090630/10/55a46b38-1213-4434-86cd-53dea0f57497.html?seed=1647377247&r=58050881#r_58050881