1

我有一个我正在处理的 VB 项目,我必须将 GridView 分解为每一行并检查一个特定的单元格。如何检查是否有空值?以下代码导致错误消息

“指定的参数超出了有效值的范围。参数名称:索引”

我检查了 GridViewRow 变量“row”的单元格计数,它出现在 5,所以我不确定我做错了什么。

Protected Sub grdProduct_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles grdProduct.RowDataBound

    ' Grey out expired products
    Dim row As GridViewRow
    row = e.Row

    Dim incomingStatus As String
    If row.Cells(5).Text.ToString() <> vbNull Then
        incomingStatus = row.Cells(5).Text.ToString()
    Else
        incomingStatus = ""
    End If

我修改了代码以首先检查单元格计数,但它仍然返回完全相同的错误。

    If row.Cells.Count > 5 And row.Cells(5).Text.ToString() <> vbNull Then
        incomingStatus = row.Cells(5).Text.ToString()
    Else
        incomingStatus = ""
    End If

最终编辑

像这样修改代码解决了这个问题。多谢你们:

    If row.Cells.Count > 5 Then
        If row.Cells(5).Text.ToString() <> vbNull Then
            incomingStatus = row.Cells(5).Text.ToString()
        Else
            incomingStatus = ""
        End If
    End If
4

1 回答 1

2

我检查了 GridViewRow 变量“row”的单元格计数,它出现在 5,所以我不确定我做错了什么。

row.Cells(5)返回第 6 个单元格,而不是第 5 个单元格,因为索引在 .NET 中为 0。但该Count属性返回实际的单元格数。

对于GridView.Rows.

GridView1.Rows(9) 

返回第 10 个GridViewRow

于 2012-09-06T20:17:04.210 回答