Команда за полем кнопок GridView

#c# #.net #asp.net #gridview #buttonfield

#c# #.net #asp.net #gridview #поле кнопок

Вопрос:

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

Получил GridView с именем gvIngevuld, в котором я показываю строки данных и 1 строку поля кнопки. Теперь я должен поместить код за эти кнопки (каждая из них одинакова), чтобы поместить некоторые вещи в формат 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!";
}
  

Спасибо.

Комментарии:

1. Попробуйте изменить CommandName на onclick и посмотрите, исправит ли это. Также, возможно, потребуется добавить к нему runat=»server». Я знаю, что мы сделали для скрытой кнопки, но это было только для конкретного способа, которым мы ее подключили.

Ответ №1:

Вы должны использовать 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 для gridview, вы можете получить к нему доступ следующим образом:

     int index = Convert.ToInt32(e.CommandArgument);
    int ServerID = Convert.ToInt32(GridView1.DataKeys[index].Value);
  

Ответ №2:

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

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

Ответ №3:

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