Foros del Web » Programando para Internet » ASPX (.net) »

Evento en dos botones de gridview

Estas en el tema de Evento en dos botones de gridview en el foro de ASPX (.net) en Foros del Web. Buenas a todos tengo un gridview que tiene dos botones, lo que necesito es que al presionar en uno de los botones me dirija a ...
  #1 (permalink)  
Antiguo 14/09/2012, 20:06
 
Fecha de Ingreso: marzo-2009
Mensajes: 46
Antigüedad: 15 años, 1 mes
Puntos: 1
Evento en dos botones de gridview

Buenas a todos
tengo un gridview que tiene dos botones, lo que necesito es que al presionar en uno de los botones me dirija a una pagina con los datos de esa persona y al presionar en el otro boton me me dirija a otra pagina y me muestre tambien los datos de esa persona.

Código:
<asp:GridView ID="GridView1" runat="server" AllowPaging="True" 
                            AllowSorting="True" AutoGenerateColumns="False" BorderColor="Black" 
                            BorderStyle="Solid" BorderWidth="2px" CellPadding="4" DataKeyNames="dni" 
                            DataSourceID="SqlDataSource1" ForeColor="#333333" GridLines="None">
                            <RowStyle BackColor="#FFFBD6" ForeColor="#333333" />
                            <Columns>
                                <asp:TemplateField ShowHeader="False">
                                    <ItemTemplate>
                                        <asp:ImageButton ID="ImageButton1" runat="server" CausesValidation="False" 
                                            CommandName="modificacion" ImageUrl="../../images/Iconos/edit_16x16.png" Text="" />
                                    </ItemTemplate>
                                </asp:TemplateField>
                                <asp:TemplateField ShowHeader="False">
                                    <ItemTemplate>
                                        <asp:ImageButton ID="ImageButton2" runat="server" CausesValidation="False" 
                                            CommandName="eliminacion" ImageUrl="../../images/Iconos/trash_16x16.png" Text="" />
                                    </ItemTemplate>
                                </asp:TemplateField>
                                <asp:BoundField DataField="dni" HeaderText="dni" ReadOnly="True" 
                                    SortExpression="dni">
                                    <HeaderStyle Font-Bold="True" ForeColor="White" />
                                </asp:BoundField>
                                <asp:BoundField DataField="apellido" HeaderText="apellido" 
                                    SortExpression="apellido">
                                    <HeaderStyle Font-Bold="True" Font-Strikeout="False" ForeColor="White" 
                                        HorizontalAlign="Center" />
                                </asp:BoundField>
                                <asp:BoundField DataField="nombre" HeaderText="nombre" SortExpression="nombre">
                                    <HeaderStyle Font-Bold="True" ForeColor="White" HorizontalAlign="Center" />
                                </asp:BoundField>
                                <asp:BoundField DataField="obrasocial" HeaderText="obrasocial" 
                                    SortExpression="obrasocial">
                                    <HeaderStyle Font-Bold="True" ForeColor="White" HorizontalAlign="Center" />
                                </asp:BoundField>
                                <asp:BoundField DataField="afiliado" HeaderText="afiliado" 
                                    SortExpression="afiliado">
                                    <HeaderStyle Font-Bold="True" ForeColor="White" HorizontalAlign="Center" />
                                </asp:BoundField>
                                
                            </Columns>
                            <EmptyDataRowStyle CssClass="EmptyRowStyle" />
                            <PagerStyle CssClass="PagerStyle" />
                            <SelectedRowStyle CssClass="SelectedRowStyle" />
                            <HeaderStyle CssClass="HeaderStyle" />
                            <EditRowStyle CssClass="EditRowStyle" />
                            <AlternatingRowStyle CssClass="AltRowStyle" />
                        </asp:GridView>
ese es el gridview que tengo los dos botones son template uno "modificacion" y el otro "eliminacion"

ahora lo que tengo en el evento al hacer clic en uno de ellos es esto

Código:
    Protected Sub GridView1_RowCommand(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewCommandEventArgs) Handles GridView1.RowCommand
        If (e.CommandName = "eliminacion") Then
            Response.Redirect("delete_pac.aspx?dni=" & GridView1.SelectedRow().Cells(1).Text)
        End If
    End Sub
pero no logro ir a esa pagina, me podrian ayudar por fa.
  #2 (permalink)  
Antiguo 15/09/2012, 20:19
Avatar de AWesker  
Fecha de Ingreso: octubre-2008
Mensajes: 177
Antigüedad: 15 años, 6 meses
Puntos: 27
Respuesta: Evento en dos botones de gridview

Creo que estas un poco equivocado, pero el SelectedRow ¿te trae datos? creo que solo funcionaba en el evento SelectedIndexChanged. El método que utilizas (RowCommand) es el más apropiado, te sugiero que al Command le agregues el CommanArgument que tendrá como valor el dni, algo así (todo dentro del GridView):

Código ASP:
Ver original
  1. <asp:ImageButton ID="ImageButton1" runat="server" CausesValidation="False" CommandName="modificacion" CommandArgument="<%#Eval("dni")%>" ImageUrl="../../images/Iconos/edit_16x16.png" Text="" />
de esta forma podrás usar el valor:
Código ASP:
Ver original
  1. Protected Sub GridView1_RowCommand(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewCommandEventArgs) Handles GridView1.RowCommand
  2.         If (e.CommandName = "eliminacion") Then
  3.             Response.Redirect("delete_pac.aspx?dni=" & e.CommandArgument.ToString())
  4.         End If
  5.     End Sub

Otra cosa que podés utilizar es el PostBackUrl de los botones de la misma forma:
Código ASP:
Ver original
  1. <asp:ImageButton ID="ImageButton1" runat="server" CausesValidation="False" ImageUrl="../../images/Iconos/edit_16x16.png" Text="" PostBackUrl='<%# "~/delete_pac.aspx?dni="&Eval("dni").toString() %>' />

Probablemente me haya equivocado con la sintaxis (programo en C#).

Probalo y nos avisas.

Saludos...
  #3 (permalink)  
Antiguo 18/09/2012, 22:27
 
Fecha de Ingreso: marzo-2009
Mensajes: 46
Antigüedad: 15 años, 1 mes
Puntos: 1
Respuesta: Evento en dos botones de gridview

Gracias AWesker me resulto lo que me pasaste, ahora como hago para abrir esa ventana en otra ventana (modal o emergente)

consegui este codigo en java pero no logro pasar el dni

Código:
<script type="text/javascript">
var leftposicion = (screen.width) ? (screen.width-790)/2:0;
var topposicion = (screen.height) ? (screen.height-500)/2:0;

function doEliminarPac(dni)
{
    myURL= "delete_pac.aspx?dni="+ dni;
    settings= 'height=500, width=700, top=' + topposicion + ', left=' +leftposicion + ', scrollbars=yes, resizable';
    window.open (myURL,"",settings);
}

</script>
He probado en colocar un dni que tenga cargado y me muestra en la ventana nueva los datos del dni ese. pero mi problemas es como tomo el mismo dependiendo del paciente que elije el usuario en el gridview.

Código:
<asp:ImageButton ID="ImageButton2" runat="server" ToolTip="Ver Marca" OnClientClick="javascript:doEliminarPac(123)" 
                                            CommandName="eliminacion" ImageUrl="../../images/Iconos/trash_16x16.png" Text="" />
o si existe otra forma mas segura rapida y sensilla de hacerlo mejor.
Gracias
  #4 (permalink)  
Antiguo 20/09/2012, 14:44
Avatar de Alexis_Mejias  
Fecha de Ingreso: enero-2005
Ubicación: Santiago
Mensajes: 77
Antigüedad: 19 años, 3 meses
Puntos: 17
Respuesta: Evento en dos botones de gridview

Usa lo siguiente:

<% #Container.DataItem("dni")%>

Se usa Asi

Código:
 <asp:ImageButton ID="ImageButton2" runat="server" ToolTip="Ver Marca" OnClientClick='javascript:doEliminarPac(<% #Container.DataItem("dni")%>)' CommandName="eliminacion" ImageUrl="../../images/Iconos/trash_16x16.png" Text="" />
Espero te sirva!

Saludos,
__________________
Alexis Mejias C.
Freelancer Chile - Si te sirvió puntúa positivo
Blog Personal
  #5 (permalink)  
Antiguo 20/09/2012, 22:42
 
Fecha de Ingreso: marzo-2009
Mensajes: 46
Antigüedad: 15 años, 1 mes
Puntos: 1
Respuesta: Evento en dos botones de gridview

Alexis intente lo que vos me pasaste pero no sucede nada cuando presiono el boton.
¿Como hago para tomar el dni que tengo en el gridview en la funcion doEliminarPac? es lo unico que me falta porque la funcion si funciona ingresando yo el dni:

OnClientClick="javascript:doEliminarPac(123)"

Espero ayudas, me esta comiendo la cabezaaaaa.....
  #6 (permalink)  
Antiguo 21/09/2012, 08:01
Avatar de Alexis_Mejias  
Fecha de Ingreso: enero-2005
Ubicación: Santiago
Mensajes: 77
Antigüedad: 19 años, 3 meses
Puntos: 17
Respuesta: Evento en dos botones de gridview

Usemos la parte del Codigo de Respaldo en el rowDatabound de la Grilla
Usa lo siguiente:

Código:
Select Case e.Row.RowType
            Case DataControlRowType.DataRow
                    Dim imgButton aS imageButton = e.Row.findcontrol("ImageButton2")
                    imgButton.OnClientClick = "javascript:doEliminarPac('"& e.Row.DataItem("nombredelcampodeldni") &"'); return false;"
END SELECT
Con eso no deberias tener problemas....

Saludos....
__________________
Alexis Mejias C.
Freelancer Chile - Si te sirvió puntúa positivo
Blog Personal
  #7 (permalink)  
Antiguo 21/09/2012, 18:09
 
Fecha de Ingreso: marzo-2009
Mensajes: 46
Antigüedad: 15 años, 1 mes
Puntos: 1
De acuerdo Respuesta: Evento en dos botones de gridview

Muchas gracias alexis, resulto tu codigo era lo que necesitaba. Para el que tenga este problema les recomiendo las soluciones de alexis y AWesker para trabajar con dos botones y enviar parametros a otras paginas.

Etiquetas: asp, botones, evento, gridview, sql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:43.