Преобразование asp: ButtonField в asp: TemplateField в элементе управления GridView - PullRequest
1 голос
/ 03 декабря 2008

В настоящее время у меня есть gridview, в котором asp: ButtonField является одним из столбцов. Обработчик события для команды извлекает идентификатор строки вида сетки из аргумента команды и использует его для выполнения некоторой логики. Теперь мне нужно переключиться на использование поля шаблона для этого столбца и сделать что-то вроде этого:

<asp:TemplateField HeaderText="Action">
    <ItemStyle HorizontalAlign="Center" />
        <ItemTemplate>
            <asp:LinkButton CommandName="myaction" CommandArgument="<%#Eval("id")%>" Text="do action" runat="server"/>
        </ItemTemplate>
 </asp:TemplateField>

Моя проблема связана с атрибутом CommandArgument - я не знаю, как получить его в качестве идентификатора строки из GridView. Eval ("id") не работает - кто-нибудь знает, как называется свойство строки id? Или лучший способ сделать это?

Ответы [ 2 ]

3 голосов
/ 03 декабря 2008

Ознакомьтесь с этим документом на веб-сайте Microsoft.

http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview.rowcommand.aspx

Вам не нужно привязывать идентификатор строки. Аргумент команды используется для аргументов события, а не для аргументов строки ... если это имеет смысл.

Полагаю, я пытаюсь сказать, что идентификатор строки неявный. Когда вы обращаетесь к событию CommandArgs, это должно быть что-то конкретное для события, которое вы пытаетесь вызвать.

т.е. Если вы хотите создать страницу, в CommandArgument у вас будет «next», «prev», «first», «last» или номер страницы.

Скажем, у вас есть кнопка «Удалить» или кнопка ImageButton. Это щелкнуло пользователем; событие удаления принимается на обратной передаче и всплывает из строки в сетку, а весь объект строки передается в качестве аргумента. Сетка затем удаляет строку, как если бы это был один элемент управления в коллекции элементов управления - поскольку это то, чем она является, таблица представляет собой набор строк таблицы.

1 голос
/ 07 июля 2011
CommandArgument="<%# CType(Container, GridViewRow).RowIndex %>"
...