Получите значения DataKey в GridView RowCommand

У меня есть a GridView со связанным DataKey, который является идентификатором объекта. Как я получаю то значение в RowCommand событие?

Это, кажется, работает, но мне не нравится бросок к LinkButton (что, если некоторая другая команда запускает событие?), и я не слишком уверен в NamingContainer бит.

LinkButton lb = (LinkButton)e.CommandSource;
GridViewRow gvr = (GridViewRow)lb.NamingContainer;
int id = (int)grid.DataKeys[gvr.RowIndex].Value;

Я знаю, что мог вместо этого передать тот идентификатор как CommandArgument, но я принял решение использовать DataKey дать мне больше гибкости.

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

51
задан Farinha 18 May 2010 в 03:54
поделиться

1 ответ

Я обычно передаю RowIndex через CommandArgument и использую его для получения нужного мне значения DataKey.

На кнопке:

CommandArgument='<%# DataBinder.Eval(Container, "RowIndex") %>'

На событии сервера

int rowIndex = int.Parse(e.CommandArgument.ToString());
string val = (string)this.grid.DataKeys[rowIndex]["myKey"];
89
ответ дан 7 November 2019 в 09:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: