none
GridView padre y Eventos del GridView hijo RRS feed

  • Pregunta

  • amigos tengo un gridview (padre) que carga los datos de una tabla, hasta aquí no hay problema; el problema radica en que dentro de este gridview padre dentro en la columna 10 un itemtemplate con otro gridview (hijo)y en este tiene dos botones de edición y eliminacion pero no logro poder tener acceso a ellos opdrian echarme una mano por favor.

    tengo el siguiente codigo  en el rowcommand del gridview hijo, pero me dices 

       protected void GridMarcas_RowCommand(object sender, GridViewCommandEventArgs e)
            {           
    
                if (e.CommandName.Equals("InsertFooter"))
                {
                    try
                    {                    
                        GridViewRow row = (sender as ImageButton).NamingContainer as GridViewRow;
                        int rowIndex = ((sender as ImageButton).NamingContainer as GridViewRow).RowIndex;                    
    
                        string MARCA = (row.Cells[1].Controls[0] as TextBox).Text;                    
    
                    }
                    catch (Exception E)
                    {
                        error = E.Message.ToString() + " - " + E.Source.ToString();
                    }
                }
    
                if (e.CommandName.Equals("Editar"))            
                {
                    //GridView GridMarcas = (GridView)e.Row.FindControl("GridMarcas");
                    ((GridViewRow)((ImageButton)sender).Parent.Parent).Cells[9].Controls.Add(GridMarcas);
                    
                    GridViewRow row = (sender as ImageButton).NamingContainer as GridViewRow;
    
                    int rowIndex = ((sender as ImageButton).NamingContainer as GridViewRow).RowIndex;
    
                }
    
            }

    pero me manda el siguiente mensaje :

    Se produjo una excepción de tipo 'System.NullReferenceException' en CURACION-2015.dll pero no se controló en el código del usuario

    Información adicional: Referencia a objeto no establecida como instancia de un objeto.

    podrian ayudarme por favor muchas gracias.


    Horacio Xochitemol Bautista

    martes, 6 de octubre de 2015 16:42

Respuestas

  • aun no he podido poder identificar el botton del gridview hijo por favor ayudaaaaaaaaaaaaaaaaaaaaaa

    Horacio Xochitemol Bautista

    • Marcado como respuesta Xochitemol miércoles, 28 de octubre de 2015 16:04
    sábado, 10 de octubre de 2015 18:40
  • A ESTE PUNTO HICE UN CAMBIO EN EL CODIGO 

    EN EL WEBFORM: 

    <ItemTemplate>
                                                            <asp:ImageButton ID="imgbtnDelete" runat="server" Height="20px" ImageUrl="~/imagenes/Marcas/Eliminar_Icon.png" ToolTip="Eliminar" Width="20px" CommandArgument='<%# Eval("MARCAID") %>' OnClick="imgbtnDelete_Click1" />                                                        
                                                            <asp:ImageButton ID="ImgBtnEditar" runat="server" Height="20px" ImageUrl="~/imagenes/Marcas/Edit.jpg" ToolTip="Modificar" Width="20px" OnClick="ImgBtnEditar_Click" CommandArgument='<%# Eval("MARCAID") %>' />                                                        
                                                        </ItemTemplate>

    Y EL CODIGO

    protected void imgbtnDelete_Click1(object sender, ImageClickEventArgs e)        
            {            
                GridViewRow grdrow = (GridViewRow)((ImageButton)sender).NamingContainer;
                ImageButton button = (sender as ImageButton);
                int commandArgument = Convert.ToInt32(button.CommandArgument);
                this.LblIdMarcaEliminar.Text = Convert.ToString(commandArgument);
                this.EliminarRegistro_ModalPopupExtender.Show();  
            }


    Horacio Xochitemol Bautista

    • Marcado como respuesta Xochitemol miércoles, 28 de octubre de 2015 16:18
    miércoles, 28 de octubre de 2015 16:18

Todas las respuestas

  • hola

    es que el sender del RwCommand es el gridview que lanzo la accion, no es el iamge button

    si querias usar el boton deberias usar el Click del ImageButton y luego usar el NamingContainer si quieres conocer la row que contiene ese boton

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    martes, 6 de octubre de 2015 17:20
  • Amigo Leandro seria mucho pedir que me apoyes con un ejemplo. por favor

    Horacio Xochitemol Bautista

    martes, 6 de octubre de 2015 19:21
  • hola

    [GridView] Eventos de controles contenidos en el Gridview

    analiza el segundo titulo, alli veras como se lanza la accion del control pero puedes tomar la row que lo contiene

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    martes, 6 de octubre de 2015 22:50
  • Amigo Lenadro no he podido solucionarlo 
     ImageButton BtonEditar = sender as ImageButton;
                GridViewRow row = BtonEditar.NamingContainer as GridViewRow;
    
                GridView GridMarcas = (GridView)e.Row.FindControl("GridMarcas");
    
                int MARCAID = Convert.ToInt32(GridMarcas.DataKey[row.RowIndex].value);
    sin embargo me mandar error GridMarcas no Existe en el contexto actual.

    Horacio Xochitemol Bautista

    miércoles, 7 de octubre de 2015 21:10
  • aun no he podido poder identificar el botton del gridview hijo por favor ayudaaaaaaaaaaaaaaaaaaaaaa

    Horacio Xochitemol Bautista

    • Marcado como respuesta Xochitemol miércoles, 28 de octubre de 2015 16:04
    sábado, 10 de octubre de 2015 18:40
  • A ESTE PUNTO HICE UN CAMBIO EN EL CODIGO 

    EN EL WEBFORM: 

    <ItemTemplate>
                                                            <asp:ImageButton ID="imgbtnDelete" runat="server" Height="20px" ImageUrl="~/imagenes/Marcas/Eliminar_Icon.png" ToolTip="Eliminar" Width="20px" CommandArgument='<%# Eval("MARCAID") %>' OnClick="imgbtnDelete_Click1" />                                                        
                                                            <asp:ImageButton ID="ImgBtnEditar" runat="server" Height="20px" ImageUrl="~/imagenes/Marcas/Edit.jpg" ToolTip="Modificar" Width="20px" OnClick="ImgBtnEditar_Click" CommandArgument='<%# Eval("MARCAID") %>' />                                                        
                                                        </ItemTemplate>

    Y EL CODIGO

    protected void imgbtnDelete_Click1(object sender, ImageClickEventArgs e)        
            {            
                GridViewRow grdrow = (GridViewRow)((ImageButton)sender).NamingContainer;
                ImageButton button = (sender as ImageButton);
                int commandArgument = Convert.ToInt32(button.CommandArgument);
                this.LblIdMarcaEliminar.Text = Convert.ToString(commandArgument);
                this.EliminarRegistro_ModalPopupExtender.Show();  
            }


    Horacio Xochitemol Bautista

    • Marcado como respuesta Xochitemol miércoles, 28 de octubre de 2015 16:18
    miércoles, 28 de octubre de 2015 16:18