none
Llenar un checkBoxList marcando elementos según true o false en bd RRS feed

  • Pregunta

  • Buen día comunidad,

    pido su ayuda con el proceso de llenado de un checkBoxList que si bien logro cargarlo de datos, requiero marcar aquellos elementos en función de un campo de la tabla en mi bd.

    El control lo he llenado de la siguiente manera:

                DataTable dt;

                …

                 …

                    chlUs.DataSource = dt;

                    chlUs.DataValueField = "UserId";

                    chlUs.DataTextField = "Nombre";

                    chlUs.DataBind();

    En la tabla en cuestión, existe una columna de tipo bit de nombre aprobado, que indicará aquellos elementos que deben marcarse (true) y aquellos en False, no.

    Se me ocurre recorrer la tabla con un foreach y por cada ciclo buscar el ítem en el checkBoxList (CheckBoxList1.Items.FindByText) para marcarlo, pero por cada ciclo necesito el dato guardado en el campo Nombre pero solo aquellos marcados en true en la columna Aprobado.

    Alguien podría ayudarme al respecto?

    Muchas gracias de antemano.

    Un saludo

    miércoles, 3 de julio de 2019 16:10

Respuestas

  • Amigo agradezco el tiempo que te tomaste en dar respuesta a mi consulta. Te comento que lo pude solucionar de la manera que imaginé y que describí en mi consulta. Aunque funciona la perfección, de todos modos si alguien tiene idea de mejorar mi código es de agradecer.

    Dejo el código por si a alguien más le sirve:

                        foreach(DataRowRow indt.Rows)

                        {

                        if(Row[2].ToString() == "True")

                        {

                       

    chlUs.Items.FindByText(Row[1].ToString()).Selected = true;

                       

    }

                       

    }

    Un saludo y gracias de nuevo amigo!

    miércoles, 3 de julio de 2019 17:51

Todas las respuestas

  • Que tal JCamaleon. 

    Para preseleccionar los check del control en función al campo que tienes en la tabla puedes utilizar el evento 

    CheckBoxList1_DataBound
     Te comparto un ejemplo de como realizarlo.
    Protected Sub CheckBoxList1_DataBound(ByVal sender As Object, ByVal e As System.EventArgs) Handles CheckBoxList1.DataBound
            For i As Integer = 0 To CheckBoxList1.Items.Count - 1
                CheckBoxList1.Items(i).Selected = CType(CheckBoxList1.DataSource, IQueryable(Of Permission)).ToList.Item(i).HasAccess
            Next
        End Sub



    Alex_87

    miércoles, 3 de julio de 2019 16:51
  • Amigo agradezco el tiempo que te tomaste en dar respuesta a mi consulta. Te comento que lo pude solucionar de la manera que imaginé y que describí en mi consulta. Aunque funciona la perfección, de todos modos si alguien tiene idea de mejorar mi código es de agradecer.

    Dejo el código por si a alguien más le sirve:

                        foreach(DataRowRow indt.Rows)

                        {

                        if(Row[2].ToString() == "True")

                        {

                       

    chlUs.Items.FindByText(Row[1].ToString()).Selected = true;

                       

    }

                       

    }

    Un saludo y gracias de nuevo amigo!

    miércoles, 3 de julio de 2019 17:51