我的这个vb.net代码有什么问题

时间:2010-12-17 08:07:45

标签: asp.net vb.net

alt text

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

发生以下错误: 未将对象引用设置为对象的实例。

2 个答案:

答案 0 :(得分:2)

您的页面加载事件中已经有了这个代码,因此它将在首次加载页面时运行,并在每次回发时运行。这可能不是你想要的。

我想在第一次加载时,GridView中没有选定的行,因此GridView1.SelectedRow将是null。如果这不是null,那么CellsCells(2)肯定会是。尝试访问null上的属性将抛出NullReferenceException - “对象引用未设置为对象的实例”。

正如此MSDN example所示,您可能最好在GridView的SelectedIndexChanged事件的事件处理程序中访问SelectedRow属性。

答案 1 :(得分:0)

Dim lab As Label = Me.GridView1.FindControl("Label1")

看起来你并没有对这个标签做任何事情。在该行上放置一个断点,看看是否找到了它。如果没有,你甚至不使用它,那就把它拿出去吧。

另外,检查调试时textbox2是否有效。