Строка аргумента команды пуста в событии rowcommand C#

У меня есть сетка. Внутри него у меня есть кнопка ссылки. Я хочу получить индекс строки кнопки, которая была нажата внутри обработчика события rowcommand. Это можно сделать с помощью свойства аргумента команды. однако он возвращает пустую строку и получает исключение.

Эта строка присутствует в обработчике событий

Int indexval = Convert.ToInt32(e.commandArgument.ToString());

Я также попробовал это, чтобы получить индекс строки. Внутри страницы aspx:

commandArgument= <%#container.DataItem%>

Но это также возвращает пустую строку. Пытался так в событии rowcommand.

Gridview gr = (gridview)sender;
Int Ind = gr.rows.selectedIndex.

Здесь значение Ind показано как -1

Есть несколько вопросов по этому вопросу, но все они находятся на VB.net. Я хочу, чтобы решение этой проблемы было в C#.

PS я новичок в C# и asp.net

1 ответ

Я использую CommandField

Добавьте этот CommandField к вашему GridView <Columns>...</Columns>

<asp:CommandField ShowSelectButton="true" SelectText="View/Edit" ItemStyle-Width="60" />

Это связано с GridView_SelectedIndexChanging который дает вам RowIndex:

protected void gvCategories_SelectedIndexChanging(object sender, GridViewSelectEventArgs e)
{
    int rowIndex = e.NewSelectedIndex;
}
Другие вопросы по тегам