исключение аргумента вне диапазона не было обработано пользователем

следующий код генерирует ошибку, указанную выше, при нажатии кнопки редактирования.

protected void uxStaffGrid_RowCommand(object sender, GridViewCommandEventArgs e)
{

    if (e.CommandName == "Select")

    {
        //Determine the RowIndex of the Row whose Button was clicked.

        int rowIndex = Convert.ToInt32(e.CommandArgument);

        //Reference the GridView Row.

        GridViewRow row = uxStaffGrid.Rows[rowIndex];

        //Fetch value of Name.

        //  string name = (row.FindControl("txtId") as Label).Text;


        string Id = row.Cells[1].Text;
        ClientScript.RegisterStartupScript(this.GetType(), "ConsumeID", "ConsumeID('" + Id + "');", true);

    }
}

ошибка произошла в строке:

GridViewRow row = uxStaffGrid.Rows[rowIndex]
#
Источник
  • 2
    Отладка и проверка uxStaffGrid.Rows[rowIndex]; либо row.Cells[1].Text; линий.
  • 1
    @ SᴇM row.Cells[1] также может вызвать это исключение.
  • 0
    stackoverflow.com/a/7718026/10466324, пожалуйста, прочтите этот пост.
  • 1
    @IMil У меня есть эта строчка во второй части моего комментария.
  • 0
    @ SᴇM, прости, не заметил :)
  • 0
    Я бы положил свои деньги на row.Cells [1], потому что rowIndex предоставляется аргументом команды. Может, это должен быть row.Cells [0]? Полное предположение ...
  • 0
    Кстати, сообщение об ошибке скажет вам, в какой строке она произошла!
  • 0
    вы можете попробовать удалить последнюю строку datagridview, например, allowuserstoaddrow=false в свойствах
  • 0
    ошибка произошла в строке GridViewRow row = uxStaffGrid.Rows [rowIndex];
  • 0
    Я пробовал row.Cells [1] .Text, но не работал.
Codelisting
за 0 против

вы можете использовать класс управления вместо их типов:

GridViewRow row = (GridViewRow)(((Control)e.CommandSource).NamingContainer);
  • 0
    попробуйте этот GridViewRow selectedRow = (GridViewRow) (((Button) e.CommandSource) .NamingContainer);
Codelisting
Популярные категории
На заметку программисту