如何在asp.net中将动态添加的文本框的值保存到数据库中

时间:2011-05-30 08:24:38

标签: asp.net

您好 我创造了没有。文本框(没有用户在txtcount文本框中输入)动态。 但我想将这些值存储到数据库中。为此,我在保存按钮单击事件中使用了如下代码:

protected void btnsave_Click(object sender, EventArgs e)
    {
        // Check how many textboxes the user created
        int count = Convert.ToInt32(txtcount.Text); 
        // Loop through them    
        for (int i=0; i < count; i++)
        {         
            // Get the TextBox      
            TextBox textbox = (TextBox)Page.FindControl("TextBox_" + i); 
            // Get the value      
            string val = textbox.Text;

            Response.Write(val);

         } 
    } 

但它给出错误:

Object reference not set to an instance of an object.

我该怎么办? 请帮我? 谢谢。

2 个答案:

答案 0 :(得分:1)

您应该以相同的顺序在每次回发时重新创建文本框。最好的地方是page_init。也许你有理由在page_load上做。 所以你可以从viewstate获取它的值。

答案 1 :(得分:1)

如果要引用它们,则需要在(每个)回发上重新创建动态控件。使用Page_InitPage_Load活动。

另一种替代方案(如果不能重复回发)可以直接从请求中读取值。例如,

string val = Request.Form["TextBox_" + i]

当然,如果在父层次结构中使用模板化控件(或主控件),则请求变量名称可能会更改。在这种情况下,解决方案之一可能是存储要以视图状态存储的样本控件名称(UniqueID)。