#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, чтобы определить, какая кнопка вызвала запуск события.