none
Como obtener el valor de una celda del gridview mediante un botón RRS feed

  • Pregunta

  • Hola, tengo un GridView  con ItemTemplate donde obtengo datos, cuando  doy click en el botón se activa el RowCommand, lo requiero es obtener el valor de la celda al que doy el click y que pasarle el valor a un TextBox, como se muestra en la imagen.

    De ante mano gracias por su apoyo.

    Manolot.

    martes, 3 de abril de 2018 20:11

Respuestas

  • Si ese 47 es un valor que usted ya tenía en su fuente de datos y lo que quiere es recuperarlo, lo que yo recomiendo es referirse a la fuente de datos original y punto.

    Si más bien el textbox se ha provisto para que el usuario modifique o provea el valor, pues sí, no queda más que buscar el valor en el textbox.  Para hacer eso, puede usar el FindControl de la celda.

    private void dgv_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        if (e.CommandName == "Comando que se espera")
        {
            int rowIndex = Convert.ToInt32(e.CommandArgument);
            GridViewRow row = dgv.Rows[rowIndex];
            TextBox tb = row.Cells[<índice de columna>].FindControl("<ID del textbox>") as TextBox;
            if (tb != null)
            {
                int valor;
                if (!Int32.TryParse(tb.Text, out valor))
                {
                    //Mostrar mensaje de error pues el valor no es un número entero válido.
                }
                else 
                {
                    //Hacer lo deseado con el valor.
                }
            }
        }
    }


    Jose R. MCP
    Code Samples

    • Propuesto como respuesta Pablo RubioModerator martes, 3 de abril de 2018 22:03
    • Marcado como respuesta ManoloT123 miércoles, 4 de abril de 2018 14:24
    martes, 3 de abril de 2018 21:14
    Moderador

Todas las respuestas

  • Si ese 47 es un valor que usted ya tenía en su fuente de datos y lo que quiere es recuperarlo, lo que yo recomiendo es referirse a la fuente de datos original y punto.

    Si más bien el textbox se ha provisto para que el usuario modifique o provea el valor, pues sí, no queda más que buscar el valor en el textbox.  Para hacer eso, puede usar el FindControl de la celda.

    private void dgv_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        if (e.CommandName == "Comando que se espera")
        {
            int rowIndex = Convert.ToInt32(e.CommandArgument);
            GridViewRow row = dgv.Rows[rowIndex];
            TextBox tb = row.Cells[<índice de columna>].FindControl("<ID del textbox>") as TextBox;
            if (tb != null)
            {
                int valor;
                if (!Int32.TryParse(tb.Text, out valor))
                {
                    //Mostrar mensaje de error pues el valor no es un número entero válido.
                }
                else 
                {
                    //Hacer lo deseado con el valor.
                }
            }
        }
    }


    Jose R. MCP
    Code Samples

    • Propuesto como respuesta Pablo RubioModerator martes, 3 de abril de 2018 22:03
    • Marcado como respuesta ManoloT123 miércoles, 4 de abril de 2018 14:24
    martes, 3 de abril de 2018 21:14
    Moderador
  • Muchas gracias Jose R.; me sirvió mucho; y como comentario me marcaba un error de formato (int rowIndex = Convert.ToInt32(e.CommandArgument))el cual solucione agregando el CommandArgument

    <asp:Button ID="BtSELECT" runat="server" CommandName="Select" 

    Text="SEL" CommandArgument='<%# Container.DataItemIndex %>' ></asp:Button>

    Muchas gracias.

    miércoles, 4 de abril de 2018 14:26