1

現在取り組んでいるVBプロジェクトがあり、GridViewを各行に分割して、特定のセルを調べる必要があります。null値があるかどうかを確認するにはどうすればよいですか?次のコードはエラーメッセージになります

「指定された引数が有効な値の範囲外でした。パラメータ名:インデックス」

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).NETに基づくインデックスは0であるため、5番目ではなく6番目のセルを返します。ただし、Countプロパティは実際のセル数を返します。

同じことが。にも当てはまりますGridView.Rows

GridView1.Rows(9) 

10番目を返しますGridViewRow

于 2012-09-06T20:17:04.210 に答える