ASP.NET GridView RowIndex как CommandArgument

Как вы можете получить доступ и отобразить индекс строки элемента gridview в качестве аргумента команды в кнопке столбца кнопки?

   ..... 

Вот очень простой способ:

  

MSDN говорит, что:

Класс ButtonField автоматически заполняет свойство CommandArgument соответствующим значением индекса. Для других командных кнопок вы должны вручную установить свойство CommandArgument командной кнопки. Например, вы можете установить CommandArgument в <% # Container.DataItemIndex%>, если элемент управления GridView не имеет пейджинга.

Поэтому вам не нужно устанавливать его вручную. Затем команда row с GridViewCommandEventArgs сделает ее доступной; например

 protected void Whatever_RowCommand( object sender, GridViewCommandEventArgs e ) { int rowIndex = Convert.ToInt32( e.CommandArgument ); ... } 

Вот предложение Microsoft для этого http://msdn.microsoft.com/en-us/library/bb907626.aspx#Y800

В gridview добавьте командную кнопку и преобразуйте ее в шаблон, а затем дайте ей имя команды в этом случае « AddToCart », а также добавьте CommandArgument « Контейнер <% # ((GridViewRow)) .RowIndex%>“

      

Затем для создания в событии RowCommand gridview укажите, когда запускается команда «AddToCart», и делайте то, что вы хотите оттуда

 protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e) { if (e.CommandName == "AddToCart") { // Retrieve the row index stored in the // CommandArgument property. int index = Convert.ToInt32(e.CommandArgument); // Retrieve the row that contains the button // from the Rows collection. GridViewRow row = GridView1.Rows[index]; // Add code here to add the item to the shopping cart. } } 

** Одна ошибка, которую я делал, заключается в том, что я хотел добавить действия на кнопку шаблона вместо того, чтобы делать это непосредственно на RowCommand Event.

Я думаю, это сработает.

      
 void GridView1_RowCommand(object sender, GridViewCommandEventArgs e) { Button b = (Button)e.CommandSource; b.CommandArgument = ((GridViewRow)sender).RowIndex.ToString(); } 

Я обычно связываю эти данные с помощью события RowDatabound с GridView:

 protected void FormatGridView(object sender, System.Web.UI.WebControls.GridViewRowEventArgs e) { if (e.Row.RowType == DataControlRowType.DataRow) { ((Button)e.Row.Cells(0).FindControl("btnSpecial")).CommandArgument = e.Row.RowIndex.ToString(); } } 
      

Это традиционный способ и последняя версия asp.net framework с строгими типизированными данными, и вам не нужно использовать в качестве строки, например, «EMPID»,

  

внутри обработчика событий:

 Protected Sub LnkBtn_Click(ByVal sender As Object, ByVal e As EventArgs) dim rowIndex as integer = sender.Attributes("RowIndex") 'Here you can use also the command argument for any other value. End Sub 
  • Как найти элемент управления в TemplateField GridView?
  • Как я могу экспортировать GridView.DataSource в datatable или dataset?
  • Столбцы двух связанных таблиц базы данных в одном ASP.NET GridView с EntityDataSource
  • GridView - отображать заголовки на пустом источнике данных
  • Как реализовать Yii2 Modal Dialog на кнопке просмотра и обновления Gridview?
  • Сброс позиции прокрутки после обратной пересылки Async - ASP.NET
  • Добавление заголовка в GridView (Android)
  • добавление текстового интерфейса для перетаскивания - Android / Java
  • Редактирование строки Gridview - динамическое связывание с DropDownList
  • Полная обратная передача, вызванная LinkButton внутри GridView внутри UpdatePanel
  • Lazy загружает изображения в gridView
  • Давайте будем гением компьютера.