1

次のコードは、Asp.netGridviewコントロール内のデータのページ1でうまく機能します。

     If e.CommandName = "Void" Then

        'Read the status of the ticket currently
        Dim RowIndex As Integer = CInt(e.CommandArgument)
        Dim row As GridViewRow = grdTradeTickets.Rows(RowIndex)

        Dim lblTransactionID As Label = DirectCast(row.FindControl("lblTransactionID"), Label)
        Dim lblTtStatus As Label = DirectCast(row.FindControl("lblTtStatus"), Label)
        Dim lblTradeTicketID As Label = DirectCast(row.FindControl("lblTradeTicketID"), Label)

        'If already void, show "Already Void" message to user. Else continue "Are you sure you want to void this Trade Ticket?"
        If lblTtStatus.Text = "Void" Then

            mdlPopupAlready.show()

        Else

            mdlPopup.Show()
            lblTradeTicketIdToVoid.Text = lblTradeTicketID.Text

        End If

    End If

ただし、ユーザーが後のページで[無効]ボタンをクリックすると、次のエラーがスローされます。

「インデックスが範囲外でした。負ではなく、コレクションのサイズ未満である必要があります。パラメータ名:インデックス」

インデックスがnullなどではありません。価値があります。考え?

4

2 に答える 2

0

私は同じ問題に直面していました。次に、SubString()メソッドの問題であることが判明しました。私がやっていたのは、インデックスを使用して文字列から部分文字列を取得することでした。好き

myString.SubString(3、6);

myStringで、「abc」を渡したのは、長さの文字列が3であることを意味します。部分文字列またはコレクションを使用しているコードを探して、デバッグしてみてください。乾杯 :)

于 2012-09-12T10:03:02.880 に答える
0

行を置き換えてみてください:

Dim RowIndex As Integer = CInt(e.CommandArgument)
Dim row As GridViewRow = grdTradeTickets.Rows(RowIndex)

Dim row As GridViewRow = DirectCast(DirectCast(e.CommandSource, Control).Parent.Parent, GridViewRow)
于 2009-04-15T13:38:21.043 に答える