Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim lab As Label = Me.GridView1.FindControl("Label1")
If TextBox2.Text = "7" Then
GridView1.SelectedRow.Cells(2).Text = "500"
Else
GridView1.SelectedRow.Cells(2).Text = "950"
End If
End Sub
发生以下错误: 未将对象引用设置为对象的实例。
答案 0 :(得分:2)
您的页面加载事件中已经有了这个代码,因此它将在首次加载页面时运行,并在每次回发时运行。这可能不是你想要的。
我想在第一次加载时,GridView中没有选定的行,因此GridView1.SelectedRow
将是null
。如果这不是null,那么Cells
或Cells(2)
肯定会是。尝试访问null上的属性将抛出NullReferenceException - “对象引用未设置为对象的实例”。
正如此MSDN example所示,您可能最好在GridView的SelectedIndexChanged
事件的事件处理程序中访问SelectedRow属性。
答案 1 :(得分:0)
Dim lab As Label = Me.GridView1.FindControl("Label1")
看起来你并没有对这个标签做任何事情。在该行上放置一个断点,看看是否找到了它。如果没有,你甚至不使用它,那就把它拿出去吧。
另外,检查调试时textbox2是否有效。