ASP.NET GridView RowIndex как CommandArgument
Как вы можете получить доступ и отобразить индекс строки элемента gridview в качестве аргумента команды в кнопке столбца кнопки?
.....
- Изменение цвета ячейки на разные значения - Gridview
- Android gridview сохраняет выбранный элемент
- Как установить GridView внутри ScrollView
- Как скрыть столбец (GridView), но все же получить доступ к его значению?
- Пейджинговые и сортировочные сетки с ASP.Net MVC
- Сортировка GridView: SortDirection всегда по возрастанию
- Простой пример сетки Android, использующий RecyclerView с GridLayoutManager (например, старый GridView)
- Как получить значение ячейки по имени столбца не по индексу в GridView в asp.net
- как связать выпадающий список в gridview?
- Отображение изображений из определенной папки на SD-карте с использованием gridview
- Создать миниатюру
- Условно скрыть CommandField или ButtonField в Gridview
- Столбцы двух связанных таблиц базы данных в одном ASP.NET GridView с EntityDataSource
Вот очень простой способ:
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