请教各位了:
小弟是.net新手,近日遇到了动态添加控件的问题
代码如下:///
///大概意思是当点击gridview的rowedit键时创建与gridview中自动生成的colums数量相同的textbox用来修改
///
protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
    {
        Label8.Text = GridView1.Rows[e.NewEditIndex].Cells[1].Text;
        n = GridView1.Rows[e.NewEditIndex].Cells.Count;
        for (int i = 2; i < GridView1.Rows[e.NewEditIndex].Cells.Count; i++)
        {
            TextBox newTextBox = new TextBox();
            newTextBox.ID = "EditTextBox" + (i - 2).ToString();
            newTextBox.Text = GridView1.Rows[e.NewEditIndex].Cells[i].Text;
            panel1.Controls.Add(newTextBox);
        }
    }
///
///在这里我希望当点击“确认修改按钮”的时候获取“之前点击RowEdit按钮”所创建的那些textbox的值
///
protected void EditButton_Click(object sender, EventArgs e)
    {
        string updateString = "";
        switch (Int32.Parse(DropDownList1.SelectedValue))
        {
            case 1:
                updateString = "UPDATE [country] SET [name] = " + ((TextBox)FindControl("EditTextBox0")).Text + ",[continent] = " + ((TextBox)FindControl("EditTextBox1")).Text + "WHERE [id] = " + Label8.Text;
                break;
            case 2:
            default:
                break;
        }
        if (updateString != "")
        {
            ExecuteUpdateCommand(updateString);
        }
    }///
///当执行的时候会报("EditTextBox0")不存在
///小弟初来csdn,没有什么分,希望各位帮忙,谢谢,谢谢

解决方案 »

  1.   

    你在生成页面之后,看看那个静态代码,看看你的textbox的ID是多少了,就能知道啥问题了
      

  2.   

    protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e) 
        { 
            Label8.Text = GridView1.Rows[e.NewEditIndex].Cells[1].Text; 
            n = GridView1.Rows[e.NewEditIndex].Cells.Count; 
            for (int i = 2; i  < GridView1.Rows[e.NewEditIndex].Cells.Count; i++) 
            { 
                TextBox newTextBox = new TextBox(); 
                newTextBox.ID = "EditTextBox" + (i - 2).ToString(); 
                newTextBox.Text = GridView1.Rows[e.NewEditIndex].Cells[i].Text;
                newTextBox.Attributes.Add("onmouseover", "javascript:alert_ID(this)"); 
                panel1.Controls.Add(newTextBox); 
            } 
        } 在客户端的时候报出来的是"EditTextBox0"和"EditTextBox1"function alert_ID(con)
    {
        alert(con.id);
    }
      

  3.   

    TO 楼主:要想使用动态添加的控件,就必须找到这个控件,要找到控件一般是用控件所在的容器如panel的findcontrols(“控件ID”)来找
    因此,这个控件ID一般要按自己的要求来定义
      

  4.   

    当D态地向页面添加一个新的控件时,该控件并不会在表单回传之间自动保持下来,该控件本身并不被保存到页面的视图状态中。但是,输入到动态生成的表单域中的任何文本都将自动保存到视图状态中。当刷新页面后还是新成同一ID号的控件时,保存在视图状态的值就会自动回到相同ID号的控件中去。http://www.cnblogs.com/ghx88/articles/348884.html
    google 到的...
    可能我没表达很清楚,还是很感谢JL99000和hsxgodkiller