Индекс строки в gridview rowCommand

Просто хочу передать значение переменной переменной:

 protected void gvVariableDetail_RowCommand(object sender, GridViewCommandEventArgs e)
        {

            if (e.CommandName == "Edit")
            {

                 int index = Convert.ToInt32(e.CommandArgument);
                 GridViewRow gvRow = gvVariableConfig.Rows[index];
                 int rowIndex = index;

            }

        }

Но rowindex все еще имеет нулевое значение, а индекс получил значение строки (в этом случае я пытаюсь редактировать строку 2, поэтому значение индекса равно 1 (начало 0)). поэтому надеюсь, что кто-нибудь знает, как передать значение индекса в rowIndex.

Ответ 1

Вы можете использовать свойство CommandSource и передать его NamingContainer в GridViewRow. Тогда вы можете использовать его свойство RowIndex:

GridViewRow gvr = (GridViewRow)((Control)e.CommandSource).NamingContainer; 
int rowIndex    = gvr.RowIndex;

Если вы хотите использовать CommandArgument, вы должны установить его из aspx:

CommandArgument='<%# ((GridViewRow) Container).RowIndex %>' 

то это также работает:

int RowIndex = int.Parse(e.CommandArgument.ToString());