Se me presentó la necesidad de tener un gridview con botones, de editar, seleccionar, eliminar y uno botón adicional que realizara otra función.
Primero declaramos nuestro gridview con las columnas que necesitamos y agregamos en un templateField el botón que necesitamos, en este ejemplo agrego 2 y agregamos en la definición del gridview la función OnRowCommand y le decimos que cree una nueva función para este evento.
<asp:GridView ID="GridView1" runat="server" OnRowDeleting ="GridView1_RowDeleting" OnRowEditing ="GridView1_RowEditing" AutoGenerateColumns="False" OnRowUpdating="GridView1_RowUpdating" OnRowCancelingEdit ="GridView1_RowCancelingEdit" OnRowCommand="GridView1_RowCommand">
<Columns>
<asp:TemplateField HeaderText ="Preguntas"><ItemTemplate>
<asp:ImageButton ID="BTPreguntas" runat="server" CausesValidation="False"
CommandName="Select" ImageUrl="~/Imagenes/lapiz.png" CommandArgument="<%# CType(Container, GridViewRow).RowIndex%>"/>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText ="Temas"><ItemTemplate>
<asp:ImageButton ID="BtTemas" runat="server" CausesValidation="False"
CommandName="Select" ImageUrl="~/Imagenes/lapiz.png" CommandArgument="<%# CType(Container,GridViewRow).RowIndex %>"/>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
en Botón, le agregamos un CommandName, a este le podemos poner el nombre que deseemos, y agregamos tambien un CommandArgument en el cual vamos a pasar el indice de la fila en la que se hizo click al botón con la siguiente instrucción "<%# CType(Container, GridViewRow).RowIndex%>"
Pasando a la parte del código en la función que se creo para el evento
Protected Sub GridView1_RowCommand(sender As Object, e As GridViewCommandEventArgs)
Aquí se escribe el código de la función deseada
End Sub
Aquí podemos leer el CommandName que le pasamos con la instruccion e.CommandName
el CommandArgument con e.CommandArgument con el que podemos recuperar el indice de la fila para obtener algún identificador del registro que deseamos por ejemplo.
Dim etiqueta As Label = GridView1.Rows(e.CommandArgument.ToString).Cells(0).FindControl("Id")
en mi caso tenía una etiqueta con un identificador, por lo que la instrucción de la fila superior me devuelve la etiqueta. en caso de que no tenga un control se puede recuperar el valor con un
GridView1.Rows(e.CommandArgument.ToString).Cells(0).text
También podemos obtener el identificador del botón que se presionó con e.CommandSource.id lo cual nos sirve para poder identificar el botón que se presionó en caso de que tengamos más de un botón creado de está manera. Así podemos programar diferentes funciones para cada botón.
En este blog iré publicando algunas cosas utiles, al menos para mi, relacionadas con las computadoras y la programación que voy utilizando en mi labor diaria.
jueves, 16 de mayo de 2013
Agregar un Botón con una función específica en un gridview en ASP.Net
Etiquetas:
alert,
ASP Net,
ASP.Net,
boton personalizado,
botones,
button,
gridview,
más de un boton.,
OnRowCommand,
varios botones,
varios controles,
vb net,
VB.Net,
vbnet
Emular msgbox en ASP.Net
Cuando estamos programando en ASP.net en muchas ocasiones necesitamos mandar mensajes al usuario, para esto podemos emular el msgbox con la siguiente función:
Public Sub MesgBox(ByVal sMessage As String, ByRef pagina As System.Web.UI.Page)
ScriptManager.RegisterStartupScript(pagina, pagina.GetType(), pagina.UniqueID, "alert ('" & sMessage & "');", True)
End Sub
Yo la tengo en un módulo y así puedo llamarla desde cualquier parte del proyecto, con la siguiente sentencia:
MesgBox("Aquí va el texto que quieres mostrar", Me)
Public Sub MesgBox(ByVal sMessage As String, ByRef pagina As System.Web.UI.Page)
ScriptManager.RegisterStartupScript(pagina, pagina.GetType(), pagina.UniqueID, "alert ('" & sMessage & "');", True)
End Sub
Yo la tengo en un módulo y así puedo llamarla desde cualquier parte del proyecto, con la siguiente sentencia:
MesgBox("Aquí va el texto que quieres mostrar", Me)
Suscribirse a:
Entradas (Atom)