您好 我创造了没有。文本框(没有用户在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.
我该怎么办? 请帮我? 谢谢。
答案 0 :(得分:1)
您应该以相同的顺序在每次回发时重新创建文本框。最好的地方是page_init。也许你有理由在page_load上做。 所以你可以从viewstate获取它的值。
答案 1 :(得分:1)
如果要引用它们,则需要在(每个)回发上重新创建动态控件。使用Page_Init
或Page_Load
活动。
另一种替代方案(如果不能重复回发)可以直接从请求中读取值。例如,
string val = Request.Form["TextBox_" + i]
当然,如果在父层次结构中使用模板化控件(或主控件),则请求变量名称可能会更改。在这种情况下,解决方案之一可能是存储要以视图状态存储的样本控件名称(UniqueID
)。