none
Mostrar valor booleano de un gridview en checkbox ASP.NET C# RRS feed

  • Pergunta

  • Buenas tardes. Quisiera pedir su apoyo para que me dijera ¿cómo le puedo hacer para mostrar el valor booleano que se muestra en un gridview a través de una consulta SQL en un checkbox?

    txtUsuarioP.Text = gvwBusqueda.SelectedRow.Cells[2].Text;
    cmbSistemas.Text = gvwBusqueda.SelectedRow.Cells[11].Text;

    Para los textobox no hay problema. Si me los muestra a la hora que selecciono una celda con las instrucciones de arriba, pero en hay un valor bit que quiero reflejarlo de igual forma en un checkbox, pero no se como. He intentado con esto, pero me da error:

    cbInsertar.Checked = Convert.ToBoolean(gvwBusqueda.SelectedRow.Cells[6].Text);

    En modo de formulario de Windows con C# sí he podido:

    chkSi.Checked = Convert.ToBoolean(row.Cells["Vigente"].Value);

    Pero en ASP.NET C# es un poco distinto y no me sale ningun valor o instrucción parecida a lo de arriba cuando es formulario de Windows.

    sábado, 18 de janeiro de 2014 18:10

Respostas

  • hola

    si tienes un checkbox en el grid vas a tener que usar el FindControl() para localizar por el nombre el control

    si hay un checkbox es porque tienes un TemplateField

    CheckBox check = row.FindControl("checkbox1") as CheckBox;

    localizando el checkbox entonces si puedes validar la propiedad Checked

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    • Marcado como Resposta Eder31 segunda-feira, 20 de janeiro de 2014 23:49
    sábado, 18 de janeiro de 2014 22:43

Todas as Respostas

  • hola

    si tienes un checkbox en el grid vas a tener que usar el FindControl() para localizar por el nombre el control

    si hay un checkbox es porque tienes un TemplateField

    CheckBox check = row.FindControl("checkbox1") as CheckBox;

    localizando el checkbox entonces si puedes validar la propiedad Checked

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    • Marcado como Resposta Eder31 segunda-feira, 20 de janeiro de 2014 23:49
    sábado, 18 de janeiro de 2014 22:43
  • Gracias Leandro. Lo intentaré mañana que llegue al trabajo.
    segunda-feira, 20 de janeiro de 2014 01:43
  • Ya logré hacerlo Leandro, gracias. Convertí a template mis checbox y con FindControl como me dijiste los localicé. Ahí creé una variable para almacenar el valor y dependiendo si era false o true es como me iba a mostrar el checbox ("habilitado o deshabilitado").

    Pongo mi solución por si le sirve a alguien. No se si sea la forma más correcta, pero me funciona.

    //chkInsertar es mi nombre de control dentro del grid.

    los "cbInsertar", "cbActualizar" etc. son los checkbox donde se verá reflejado al chkInsertar del grid, si está activado o desactivado, por eso puse los if.

    bool Insertar = ((CheckBox)(gvwBusqueda.SelectedRow.Cells[5].FindControl("chkInsertar"))).Checked;
            if (Insertar == true)
            {
                cbInsertar.Checked = true;
            }
            else
            {
                cbInsertar.Checked = false;
            }
            bool Actualizar = ((CheckBox)(gvwBusqueda.SelectedRow.Cells[6].FindControl("chkActualizar"))).Checked;
            if (Actualizar == true)
            {
                cbActualizar.Checked = true;
            }
            else
            {
                cbActualizar.Checked = false;
            }
            bool Eliminar = ((CheckBox)(gvwBusqueda.SelectedRow.Cells[7].FindControl("chkEliminar"))).Checked;
            if (Eliminar == true)
            {
                cbEliminar.Checked = true;
            }
            else
            {
                cbEliminar.Checked = false;
            }
            bool Imprimir = ((CheckBox)(gvwBusqueda.SelectedRow.Cells[8].FindControl("chkImprimir"))).Checked;
            if (Imprimir == true)
            {
                cbImprimir.Checked = true;
            }
            else
            {
                cbImprimir.Checked = false;
            }
            bool Activo = ((CheckBox)(gvwBusqueda.SelectedRow.Cells[14].FindControl("chkActivo2"))).Checked;
            if (Activo == true)
            {
                cbActivo.Checked = true;
            }
            else
            {
                cbActivo.Checked = false;
            }

    Gracias nuevamente.

    segunda-feira, 20 de janeiro de 2014 21:50
  • Gracias Eder31 y Alejandro Tuttini por sus aportes. Estoy trabajando con un caso similar. He probado el código de Eder31 de Insertar pero me arroja un error de "Referencia a objeto no establecida como instancia de un objeto."

    Código aspx

    <asp:GridView ID="gvActR" runat="server" AutoGenerateColumns="false">
            <Columns>
                <asp:BoundField DataField="idEnunciado" HeaderText="idEnunciado" />
                <asp:BoundField DataField="Enunciado" HeaderText="Enunciado" />
                <asp:TemplateField HeaderText="Me gusta">
                    <ItemTemplate>
                        <asp:CheckBox ID="chbGusta" runat="server" />
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="Me desagrada">
                <ItemTemplate>
                    <asp:CheckBox ID="chbDesagrada" runat="server" />
                </ItemTemplate>
            </asp:TemplateField>
            </Columns>
            </asp:GridView>
    
            <asp:Button ID="btnSig" runat="server" Text="Siguiente" OnClick="btnSig_Click" /><br /><br />
    
    
            <asp:CheckBox ID="cbInsertar" runat="server" />

    Código C#:

    namespace Presentacion
    {
        public partial class Actividades : System.Web.UI.Page
        {
            protected void Page_Load(object sender, EventArgs e)
            {
                DataSet ds = new DataSet();
                ds = Negocio.AccesoLogica.ConsultarTest();
                gvActR.DataSource = ds;
                gvActR.DataBind();
            }
    
            protected void btnSig_Click(object sender, EventArgs e)
            {
    
                bool Insertar = ((CheckBox)(gvActR.SelectedRow.Cells[2].FindControl("chbGusta"))).Checked;
                if (Insertar == true)
                {
                    cbInsertar.Checked = true;
                }
                else
                {
                    cbInsertar.Checked = false;
                }
            }
        }
    }

    Agredecería mucho su ayuda

    Saludos



    terça-feira, 18 de fevereiro de 2020 15:36
  • Hola

    Les informo que ya resolví mi problema. Me faltaba colocar el código del Page_Load dentro de un if(!IsPostBack){}

    protected void Page_Load(object sender, EventArgs e)
            {
                if (!IsPostBack) 
                {
                    DataSet ds = new DataSet();
                    ds = Negocio.AccesoLogica.ConsultarTest();
                    gvActR.DataSource = ds;
                    gvActR.DataBind();
                }
            }
    • Sugerido como Resposta ropDevM quarta-feira, 19 de fevereiro de 2020 20:36
    quarta-feira, 19 de fevereiro de 2020 20:35