23 mar 2010

Botón Confirmación en Gridview

Muchos problemas que he visto por la red, es que algunas personas se complican demasiado para asignarle una función Javascript a un control del servidor (un control del servidor puede ser ImageButton, Button, Panel .. etc), en este caso lo que vamos a realizar es tener un listado de Inspectores en un gridview, en el cual este tendrá un ImageButton que se encargará de ejecutar una funcion Javascript.


1.- Primero debemos de tener la función que se encargará de mostrar el mensaje de confirmación


********* Función ************
Donde la variable e será el evento a ejecutarse y la variable mensaje
será el mensaje que quieres que se muestre.


function mensajeConfirm(e, mensaje)
{
if(!confirm(mensaje)){
if(window.event){
window.event.cancelBubble=true;
window.event.returnValue=false;
}
if(e && e.preventDefault){
e.preventDefault();
e.stopPropagation();
}
}
}
2.- Luego el código aspx en la parte sombreada con color rojo vemos un evento, propio del ImageButton, OnclientClick pues este es el que te permitirá ejecutar la función que acabamos de crear en el punto 1.


*********** Aspx *********


<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:Label ID="fila" runat="server" Text='<% # Container.DataItemIndex + 1 %>'></asp:Label>

</ItemTemplate>
<ItemStyle HorizontalAlign="Right" Width="15px"></ItemStyle>
</asp:TemplateField>

<asp:BoundField DataField="DNI_INSPECTOR" HeaderText="DNI">
<ItemStyle HorizontalAlign="Center" Width="100px"></ItemStyle>
</asp:BoundField>
<asp:BoundField DataField="NOMBRE" HeaderText="INSPECTOR">
<ItemStyle HorizontalAlign="Left" Width="300px"></ItemStyle>
</asp:BoundField>
<asp:BoundField DataField="COD_REGISTRO" HeaderText="C. REGISTRO">
<ItemStyle HorizontalAlign="Center" Width="70px"></ItemStyle>
</asp:BoundField>
<asp:BoundField DataField="NOMBRE_REGION_CTL" HeaderText="REGION">
<ItemStyle HorizontalAlign="Center" Width="130px"></ItemStyle>
</asp:BoundField>
<asp:TemplateField>
<ItemTemplate>
<asp:ImageButton ID="ImbEliminar" runat="server" CssClass="detail"
CommandArgument='<%# Eval("CodInspector")%>' CommandName="Del" ImageUrl="~/imagen/btnDelete.gif"
OnClientClick="mensajeConfirm(event, '¿ Está seguro que desea eliminar el Inspector seleccionado ?')"
ToolTip="Eliminar" />

</ItemTemplate>
<ItemStyle Width="15px"></ItemStyle>
</asp:TemplateField>
</Columns>
</asp:GridView>


3.- Luego vendría el código C# para acceder a ese ImageButton del gridview en el evento RowCommand del gridview.


protected void dgDatos_RowCommand(object sender, GridViewCommandEventArgs e)
{
try
{
//CommandName seria el nombre que le ponemos al
//ImageButton para acceder mediante este evento

if (e.CommandName.Equals("Del"))
{
// Esta linea se encarga de recuperar, en este caso,
//la llave primaria de esa fila del listado
//eso se lo asigno en CommandArgument lo podrán
//ver arriba está sombreado de color rojo

Int32 codigo= Convert.ToInt32(e.CommandArgument);
eliminarInspector(codigo);
}
catch (Exception ex)
{
lblError.Text = ex.Message;
}
}

4.- Finalmente vamos a tener un listado así en el cual presionamos el botón de eliminar y mostrará un mensaje que si realmente desea eliminarlo adjunto las imágenes y sería todo.


1

2

No hay comentarios:

Publicar un comentario