gridview linkbutton

Cómo seleccionar la fila de aspgridview al hacer clic en el botón de enlace para obtener el valor de ID oculto



linkbutton (1)

Estoy vinculando el botón de enlace con los datos del título en aspgridview y también vinculando la etiqueta oculta que contiene el valor de ID. cuando el usuario haga clic en este botón de enlace, me gustaría acceder al valor de ID. Necesito esto porque, si el usuario inicia sesión, solo aparecerá una ventana emergente con un mensaje de alerta para iniciar sesión para obtener más detalles.

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

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

Pero estoy obteniendo grdSelRow como nulo.

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


El problema es que al hacer clic en un botón en una vista de cuadrícula, la fila solo será una fila en la que se haga clic y no una fila SelectedRow . Si desea convertirlo en SelectedRow, debe especificar CommandName="Select" en el marcado del botón.

Aquí hay dos métodos para cumplir su requisito.

Conectando un evento onclick para el LinkButton dentro de ItemTemplate

Margen

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

Código detrás

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

Usando RowCommand para atrapar el clic de LinkButton.

Margen

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

Código detrás

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"); } }