2008-12-03 5 views
1

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

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

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

ответ

3

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

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

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

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

i.e Если вы хотите перейти на страницу, вы должны иметь «следующий», «предыдущий», «первый», «последний» или номер страницы в CommandArgument.

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

1
CommandArgument="<%# CType(Container, GridViewRow).RowIndex %>"