Ошибка индексации вне диапазона при использовании row.FindControl внутри события rowcommand Asp.net Gridview с включенной функцией Paging - PullRequest
1 голос
/ 15 апреля 2009

Следующий код прекрасно работает на странице 1 данных в элементе управления Asp.net Gridview:

     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

Однако, если пользователь нажимает кнопку «Void» на любой последующей странице, выдается следующая ошибка:

"Индекс был вне диапазона. Должен быть неотрицательным и меньше размера коллекции. Имя параметра: индекс"

Не похоже, что Индекс равен нулю или что-то в этом роде. Это имеет значение. Мысли?

Ответы [ 2 ]

0 голосов
/ 12 сентября 2012

Я столкнулся с той же проблемой. Тогда это оказалось проблемой с методом SubString (). То, что я делал, я получал подстроку из строки, используя индекс. Как

myString.SubString (3, 6);

и в myString я передаю «abc», что означает, что длина строки равна 3. Найдите некоторый код, который использует подстроку или коллекцию, и попробуйте отладить его. Приветствия:)

0 голосов
/ 15 апреля 2009

Попробуйте заменить строки:

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)
...