2011-06-09 12 views
17

Estoy vinculando el botón de enlace con los datos de título en aspgridview y también la etiqueta oculta que contiene el valor de ID. cuando el usuario hace clic en este botón de enlace, me gustaría acceder al valor de identificación. Esto lo necesito porque, si el usuario inicia sesión, entonces solo aparece la ventana de detalle emergente, otro mensaje de alerta para iniciar sesión para obtener más detalles.Obtener la fila seleccionada de aspgridview al hacer clic en el botón de enlace para obtener el valor de ID oculto

en el evento lnkTitle_Click() Estoy intentando acceder a la fila seleccionada para encontrar el control de la etiqueta.

GridViewRow grdSelRow = GridView1.SelectedRow; 
Label lblID = (Label)grdSelRow.FindControl("lblID"); 

Pero obtengo grdSelRow como nulo.

¿Cómo obtener la fila seleccionada al hacer clic en el botón de enlace de gridview?

Respuesta

24

El problema es que al hacer clic en un botón en un GridView, la fila solo será una fila pulsada y no un SelectedRow. Si desea convertirlo en SelectedRow, debe especificar CommandName="Select" en el marcado del botón.

Aquí hay dos métodos para cumplir con sus requisitos.

cableado hasta un evento onclick para el LinkButton dentro ItemTemplate

marcado

<asp:TemplateField> 
    <ItemTemplate> 
     <asp:LinkButton ID="LinkButton1" runat="server" 
        Text="Click1" 
        OnClick="LinkButton1_Click"/> 
    </ItemTemplate> 
</asp:TemplateField> 

de código subyacente

protected void LinkButton1_Click(object sender, EventArgs e) 
{ 
    GridViewRow clickedRow = ((LinkButton) sender).NamingContainer as GridViewRow; 
    Label lblID = (Label)clickedRow.FindControl("lblID"); 
} 

Usando RowCommand para coger el LinkButton clic.

marcado

<asp:TemplateField> 
    <ItemTemplate> 
     <asp:LinkButton ID="LinkButton2" runat="server" 
        Text="Click2" 
        CommandName="MyCustomCommand"/> 
    </ItemTemplate> 
</asp:TemplateField> 

de código subyacente

protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e) 
{ 
    if(e.CommandName.Equals("MyCustomCommand")) 
    { 
     GridViewRow clickedRow = ((LinkButton)e.CommandSource).NamingContainer as GridViewRow; 
     Label lblID = (Label)clickedRow.FindControl("lblID"); 
    } 
} 
+1

Gracias Naveen. Está funcionando de esta manera. – NMM

+1

+1 @Naveen para especificar "Si desea convertirlo en SelectedRow, debe especificar CommandName =" Seleccionar "en el marcado del botón" – Rama

+0

@Naveen, ¿cómo marca la selección antes de mostrar una javascript confirm en caso de gridview? si hago clic en cancelar en la confirmación, no veo la fila actual seleccionada ni cuándo veo la fila seleccionada antes de mostrarme la ventana emergente de confirmación. – Rama

Cuestiones relacionadas