未将对象引用设置到对象的实例问题

protected void ListView1_ItemUpdating(object sender, ListViewUpdateEventArgs e) { //string courseid = ((TextBox)GridView1.Rows[e.RowIndex].Cells[0].Controls[0]).Text.ToString().Trim(); //string courseid = ((TextBox)e.NewValues["courseid"]).Text.ToString().Trim(); string coursename = ((Label)ListView1.Items[e.ItemIndex].FindControl("coursenameTextBox")).ToString().Trim();//这句提示有问题 string teacher = ((Label)ListView1.Items[e.ItemIndex].FindControl("teacherTextBox")).ToString().Trim(); SqlConnection conn = new SqlConnection(WebConfigurationManager.AppSettings["strConn"].ToString()); SqlCommand comm = new SqlCommand("update courseinfo set coursename=✀" + coursename + "✀,teacher=✀" + teacher + "✀ where courseid=✀" + ListView1.DataKeys[e.ItemIndex].Value.ToString() + "✀", conn);
2026年09月26日 21:49
有4个网友回答
网友(1):

典型的空指针异常
建议不要写这种长语句 容错性太差
ListView1.Items[e.ItemIndex]可能为空
ListView1.Items[e.ItemIndex].FindControl("coursenameTextBox")也有可能为空
如果调用空对象的方法 如.FindControl()、.ToString()就会报错“未将对象引用设置到对象的实例”
所以 我建议多用if条件语句 判断对象是否为空 再作操作

网友(2):

说明并没有找到coursenameTextBox这个东西,或者是这个里面的值你在获取的时候没有获取到coursenameTextBox,你可以调试一下然后再监视里面看看到底怎样FindControl可以获取这个控件

网友(3):

FindControl是null,ToString()就报错了

网友(4):

留联系瞧瞧!