2009-04-15 2 views
1

Следующий код прекрасно работает на странице 1 данных внутри элемента управления Asp.net Gridview:Index из ошибок диапазона при использовании row.FindControl внутри rowcommand события Asp.net Gridview с подкачкой Enabled

 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 

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

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

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

+0

Можете ли вы разместить разметку для сетки? – Macros

ответ

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

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

myString.SubString (3, 6);

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