老是那个问题——“未将对象引用设置到对象的实例”
private void ddlistNumber_SelectedIndexChanged(object sender,System.EventArgs e)
{
int i;
Table t=new Table();
Page.Controls[1].Controls.Add(t);
t.Attributes.Add("style", "width:100%");
for(i=1;i<=Convert.ToInt32(ddlistNumber.SelectedItem.Text);i++)
{
TextBox txtOrder=new TextBox();
txtOrder.ID="txtOrder"+Convert.ToString(i);
txtOrder.Width=Unit.Pixel(64);
Controls.Add(txtOrder);
TextBox txtContent=new TextBox();
txtContent.ID="txtContent"+Convert.ToString(i);
txtContent.Width=Unit.Pixel(280);
Controls.Add(txtContent);
DropDownList ddlFlag=new DropDownList();
ddlFlag.ID="ddlFlag"+Convert.ToString(i);
ddlFlag.Items.Add(new ListItem("0"));
ddlFlag.Items.Add(new ListItem("1"));
Controls.Add(ddlFlag);
TableRow r=new TableRow();
t.Rows.Add(r);
TableCell c1=new TableCell();
c1.Controls.Add(txtOrder);
r.Cells.Add(c1);
TableCell c2=new TableCell();
c2.Controls.Add(txtContent);
r.Cells.Add(c2);
TableCell c3=new TableCell();
c3.Controls.Add(ddlFlag);
r.Cells.Add(c3);
}
}
private void btnOK_Click(object sender, System.EventArgs e)
{
SqlConnection sqlcnn=(SqlConnection)Session["MainConnection"];
SqlCommand cmd2=new SqlCommand("Insert Into tblExamination (QuestionID, QuestionContent) Values (@QuestionID, @QuestionContent)", sqlcnn);
cmd2.Parameters.Add("@QuestionID", txtQuestionID.Text);
cmd2.Parameters.Add("@QuestionContent", txtQuestionContent.Text);
cmd2.ExecuteNonQuery();
for(j=1; j<=Convert.ToInt32(ddlistNumber.SelectedItem.Text); j++)
{
SqlCommand cmd3=new SqlCommand("Insert Into tblAnswer (QuestionID, AnswerOrder, AnswerContent, CorrectFlag) Values (@QuestionID, @AnswerOrder, @AnswerContent, @CorrectFlag)", sqlcnn);
cmd3.Parameters.Add("@QuestionID", txtQuestionID.Text);
****** cmd3.Parameters.Add("@AnswerContent", ((TextBox)Page.FindControl("txtContent"+Convert.ToString(j))).Text);
cmd3.Parameters.Add("@CorrectFlag", ((DropDownList)Page.FindControl("ddlFlag"+Convert.ToString(j))).SelectedItem.Text);
cmd3.Parameters.Add("@AnswerOrder", Convert.ToInt64(((TextBox)Page.FindControl("txtOrder"+Convert.ToString(j))).Text));
cmd3.ExecuteNonQuery();
}
}
主要目的是想通过dropdownlist里面的数据动态的创建几个textbox,放在表格里(为了换行的目的),把textbox里的内容提交到数据库时出错,在*****处
错误是:
“/Oil”应用程序中的服务器错误。
--------------------------------------------------------------------------------
未将对象引用设置到对象的实例。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.NullReferenceException: 未将对象引用设置到对象的实例。
源错误:
行 130: SqlCommand cmd3=new SqlCommand("Insert Into tblAnswer (QuestionID, AnswerOrder, AnswerContent, CorrectFlag) Values (@QuestionID, @AnswerOrder, @AnswerContent, @CorrectFlag)", sqlcnn);
行 131: cmd3.Parameters.Add("@QuestionID", txtQuestionID.Text);
行 132: cmd3.Parameters.Add("@AnswerContent", ((TextBox)Page.FindControl("txtContent"+Convert.ToString(j))).Text);
行 133: cmd3.Parameters.Add("@CorrectFlag", ((DropDownList)Page.FindControl("ddlFlag"+Convert.ToString(j))).SelectedItem.Text);
行 134: cmd3.Parameters.Add("@AnswerOrder", Convert.ToInt64(((TextBox)Page.FindControl("txtOrder"+Convert.ToString(j))).Text));
源文件: c:\documents and settings\administrator\my documents\oil\oil\add.aspx.cs 行: 132
堆栈跟踪:
[NullReferenceException: 未将对象引用设置到对象的实例。]
Oil.Add.btnOK_Click(Object sender, EventArgs e) in c:\documents and settings\administrator\my documents\oil\oil\add.aspx.cs:132
System.Web.UI.WebControls.Button.OnClick(EventArgs e)
System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument)
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument)
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData)
System.Web.UI.Page.ProcessRequestMain()
--------------------------------------------------------------------------------
版本信息: Microsoft .NET Framework 版本:1.1.4322.573; ASP.NET 版本:1.1.4322.573
望高手指点,谢谢