Ottieni l’indice di riga sull’evento Asp.net Rowcommand

Ho un asp.net Gridview.

  <asp:ImageButton ID="imgBtn1" CssClass="SelectRow" runat="server" CausesValidation="false" CommandArgument='' CommandName="ViewFactors" ImageUrl="~/tadarokat/Images/factor.png" Text="" />   

Come posso ottenere rowIndex sull’evento di comando row?
Voglio evidenziare (selezionare) la riga di destinazione quando si lancia Rowcommand.

questa è la risposta per la tua domanda.

 GridViewRow gvr = (GridViewRow)(((ImageButton)e.CommandSource).NamingContainer); int RowIndex = gvr.RowIndex; 

ImageButton \ Button ecc.

 CommandArgument='<%# Container.DataItemIndex%>' 

code-behind

 protected void gvProductsList_RowCommand(object sender, GridViewCommandEventArgs e) { int index = e.CommandArgument; } 

se hai compilato il comando di gridview like insert, aggiorna elimina, sul comando row puoi seguire il codice di riga per ottenere l’indice.

  int index = Convert.ToInt32(e.CommandArgument); 

Oppure, puoi usare una class di control posto dei loro tipi:

 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) { } } 

Sono stato in grado di utilizzare la risposta di rahularyansharma sopra nel mio progetto, con una modifica secondaria. Avevo bisogno di ottenere il valore di particolari celle sulla riga su cui l’utente fa clic su un LinkButton. La seconda riga può essere modificata per ottenere il valore di tutte le celle che desideri. Ecco la mia soluzione:

  GridViewRow gvr = (GridViewRow)(((LinkButton)e.CommandSource).NamingContainer); string typecore = gvr.Cells[3].Text.ToString().Trim();