Команда за GridView ButtonField - PullRequest
6 голосов
/ 11 мая 2011

Я получил вопрос о команде позади ButtonField (тип изображения) в GridView.

Получил GridView с именем gvIngevuld, в котором я показываю строки данных и 1 строку ButtonField. Теперь я должен поместить код за этими кнопками (каждая из них одинакова), чтобы поместить некоторые вещи в формате PDF. Проблема в том, что я не знаю, как разместить код за этими кнопками? Код у меня есть:

<asp:ButtonField ButtonType="Image" ImageUrl="~/Images/pdf.png"  CommandName="pdf_click" />

Как вы видите, я использовал свойство CommandName = "pdf_click", но когда я нажимаю одну из кнопок, появляется только обратная передача, но ничего не происходит. Кто-нибудь, кто может помочь мне здесь?

в случае необходимости, код:

protected void pdf_click(object sender, EventArgs e)
{
    lblWelkom.Text = "Succes!";
}

Спасибо.

Ответы [ 3 ]

28 голосов
/ 11 мая 2011

Вы должны использовать RowCommand событие gridview.Установите commandArgument для уникального ключа вашего элемента.(По умолчанию он передает индекс строки)

void gvIngevuld_RowCommand(Object sender, GridViewCommandEventArgs e)
 {
 // If multiple buttons are used in a GridView control, use the
 // CommandName property to determine which button was clicked.
 if(e.CommandName=="pdf_click")
  {
   // Convert the row index stored in the CommandArgument
   // property to an Integer.
   int index = Convert.ToInt32(e.CommandArgument);

   // Retrieve the row that contains the button clicked 
   // by the user from the Rows collection.
   GridViewRow row = gvIngevuld.Rows[index]; 
   //gbIngevuld is your GridView's name

   // Now you have access to the gridviewrow.
  }  
}   

Кроме того, если вы установили DataKeyNames вида сетки, вы можете получить к нему следующий доступ:

0 голосов
/ 11 июля 2017

Просто дополнение, я написал и попробовал точно так же, но кнопка все еще не работает ...

... потребовалось некоторое время, чтобы я понял, что забыл вещь, которая была OnRowCommand="<YourGridViewName>_RowCommand" внутри вашего элемента GridView в файле **. cs *

0 голосов
/ 11 мая 2011

Свойство CommandName не определяет метод для вызова. Для этого вам нужно создать метод, связанный с командным событием элемента управления.
Я не слишком разбираюсь в GridViews, боюсь, но я думаю, что самый простой способ сделать это - выбрать его в режиме конструктора в Visual Studio, перейти к свойствам, нажать кнопку событий (выглядит как молния) мигать) и дважды щелкните по событию RowCommand. Это должно автоматически создать метод, связанный с событием командной кнопки.
Затем вы можете использовать параметр GridViewCommandEventArgs для доступа к свойствам CommandName, CommandArgument и CommandSource, чтобы определить, какая из причин вызвала событие.

...