Ключ данных Gridview Rowcommand выдает ошибку индекса вне диапазона

Я добавил кнопку с именем резерв в свой вид сетки, и когда я нажимаю на нее, я хочу внести некоторые изменения в вид сетки, однако это дает ошибку индекса вне диапазона. Ниже приведен метод rowCommand:

    protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        int index = Convert.ToInt32(e.CommandArgument);
        GridViewRow row = GridView1.Rows[index];

        if (row.RowType == DataControlRowType.DataRow)
        {
            welcomeUser.InnerText = GridView1.DataKeys[index].Value.ToString();
        }            
    }

Ниже приведены мои столбцы сетки:

        <Columns>
            <asp:BoundField DataField="Id" HeaderText="Id" SortExpression="Id" />
            <asp:BoundField DataField="BookName" HeaderText="BookName" 
                SortExpression="BookName" />
              <asp:ButtonField ButtonType="Button" Text="Reserve" CommandName="Reverse" />
        </Columns>

person HOY    schedule 04.03.2012    source источник
comment
Вы устанавливаете DataKeyNames в своем представлении сетки?   -  person Steve    schedule 05.03.2012
comment
это решило проблему, пожалуйста, напишите это как ответ, и я приму его, нужны ли мне ключи данных для внесения изменений в данные?   -  person HOY    schedule 05.03.2012


Ответы (1)


Вам необходимо установить DataKeyNames, если вы хотите использовать выражение DataKey[index]
см. MSDN здесь

person Steve    schedule 05.03.2012