2011-06-28 38 views
28

Tengo una asp.net Gridview.
Obtener índice de fila en el evento Asp.net Rowcommand

<asp:TemplateField HeaderText="View Faktor" ShowHeader="False" Visible="True"> 
       <ItemTemplate> 
        <asp:ImageButton ID="imgBtn1" CssClass="SelectRow" runat="server" CausesValidation="false" 
         CommandArgument='<%#(eval("mprID")) %>' CommandName="ViewFactors" ImageUrl="~/tadarokat/Images/factor.png" 
         Text="" /> 
       </ItemTemplate> 
      </asp:TemplateField> 

¿Cómo puedo obtener rowIndex el evento de comando fila?
Quiero resaltar (seleccionar) la fila de destino cuando se activa el comando de hilera.

Respuesta

3

si ha incorporado el comando de gridview como insertar, actualizar eliminar, en el comando de fila puede seguir el código de línea para obtener el índice.

int index = Convert.ToInt32(e.CommandArgument); 
1
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) 
     { 

     } 
    } 
10

ImageButton \ Botón etc.

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

de código subyacente

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

Definitivamente la solución más sencilla, sobre todo porque la fundición VB no es tan simple como el ejemplo en C# la otra respuesta. – Brent

+3

Esto no funcionará cuando tenga varias páginas en la vista de cuadrícula – MyCSharpCorner

1

pude usar la respuesta de rahularyansharma más arriba en mi propio proyecto, con una modificación menor. Necesitaba obtener el valor de celdas particulares en la fila en la que el usuario hace clic en un botón de enlace. La segunda línea se puede modificar para obtener el valor de tantas celdas como desee. Aquí está mi solución:

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

O bien, puede utilizar una clase control en lugar de sus tipos:

GridViewRow row = (GridViewRow)(((Control)e.CommandSource).NamingContainer); 

int RowIndex = row.RowIndex; 
+1

Me gusta esto. Más genérico y una alternativa simple cuando e.CommandArgument está en uso. – clamchoda

Cuestiones relacionadas