Получить индекс Row в событии Rowcommand от Asp.net
У меня есть asp.net Gridview.
<asp:ImageButton ID="imgBtn1" CssClass="SelectRow" runat="server" CausesValidation="false" CommandArgument='' CommandName="ViewFactors" ImageUrl="~/tadarokat/Images/factor.png" Text="" />
Как я могу получить rowIndex в событии команды row?
Я хочу выделить (выбрать) целевую строку при запуске Rowcommand.
- Как реализовать выбор полной строки в GridView без кнопки выбора?
- Высота Gridview снижается
- Экспорт GridView в несколько листов Excel
- Как скрыть столбцы в ASP.NET GridView с автогенерированными столбцами?
- Изменение цвета ячейки на разные значения - Gridview
- Пересечение столбцов GridLayoutManager Android Recyclerview
- Как найти элемент управления в TemplateField GridView?
- Пейджинговые и сортировочные сетки с ASP.Net MVC
- Столбцы двух связанных таблиц базы данных в одном ASP.NET GridView с EntityDataSource
- GridView - отображать заголовки на пустом источнике данных
- Android gridview сохраняет выбранный элемент
- Создание элементов таблицы GridView
- Сетка изображений внутри ScrollView
это ответ на ваш вопрос.
GridViewRow gvr = (GridViewRow)(((ImageButton)e.CommandSource).NamingContainer); int RowIndex = gvr.RowIndex;
ImageButton \ Button и т. Д.
CommandArgument='<%# Container.DataItemIndex%>'
фоновый код
protected void gvProductsList_RowCommand(object sender, GridViewCommandEventArgs e) { int index = e.CommandArgument; }
если вы создали команду gridview, например insert, update delete, в команде row вы можете получить код строки, чтобы получить индекс.
int index = Convert.ToInt32(e.CommandArgument);
Или вы можете использовать class control
вместо своих типов:
GridViewRow row = (GridViewRow)(((Control)e.CommandSource).NamingContainer); int RowIndex = row.RowIndex;
protected void gvProductsList_RowCommand(object sender, GridViewCommandEventArgs e) { try { if (e.CommandName == "Delete") { GridViewRow gvr = (GridViewRow)(((ImageButton)e.CommandSource).NamingContainer); int RemoveAt = gvr.RowIndex; DataTable dt = new DataTable(); dt = (DataTable)ViewState["Products"]; dt.Rows.RemoveAt(RemoveAt); dt.AcceptChanges(); ViewState["Products"] = dt; } } catch (Exception ex) { throw; } } protected void gvProductsList_RowDeleting(object sender, GridViewDeleteEventArgs e) { try { gvProductsList.DataSource = ViewState["Products"]; gvProductsList.DataBind(); } catch (Exception ex) { } }
Я смог использовать ответ rahularyansharma выше в моем собственном проекте с одной незначительной модификацией. Мне нужно было получить значение конкретных ячеек в строке, на которую пользователь щелкает ссылку LinkButton. Вторая строка может быть изменена, чтобы получить значение как можно большего количества ячеек. Вот мое решение:
GridViewRow gvr = (GridViewRow)(((LinkButton)e.CommandSource).NamingContainer); string typecore = gvr.Cells[3].Text.ToString().Trim();