【发布时间】:2025-12-17 23:00:01
【问题描述】:
我试图隐藏 gridview 中为空或为空的列,当我调试时,在第一个 for 循环中它会抛出未设置为对象实例的对象引用。我已经尝试了很长时间,但我无法弄清楚。这是我的代码。
Protected Sub GridView1_RowDataBound(ByVal sender As Object,
ByVal e As GridViewRowEventArgs)
Dim Grid As GridView = FormView1.FindControl("GridView1")
Dim hasData As Boolean = False
Dim row As Integer
For col = 0 To Grid.HeaderRow.Cells.Count Step 1
For row = 0 To Grid.Rows.Count Step 1
If Not (String.IsNullOrEmpty(Grid.Rows(row).Cells(col).Text)) Then
hasData = True
End If
Next
Grid.Columns(col).Visible = hasData
Next
End Sub
【问题讨论】:
-
发生在哪一行,为什么让我们猜测?
-
在达到 Count 之前循环不是一个好主意。循环直到 (Count-1)。如果你在程序崩溃的情况下调试程序,你会注意到 row 和 col 可能是我们的范围。
-
是的,我更正了计数 - 1,我错过了。
-
它试图引用的对象是什么?我正在尝试创建一个新的 gridview 实例,但这不是问题
-
为什么要在
GridView1_RowDataBound内循环遍历Grid.Rows.Count?RowDataBound本身会为网格中的每一行执行,因此您无需再次循环。
标签: asp.net vb.net gridview nullreferenceexception