none
Gerar CheckBoxList dinâmico e gravar os valores selecionados RRS feed

  • Pergunta

  • Bom dia pessoal!

    Estou com a seguinte problemática:

    Preciso criar um checkbox list que sempre possuirá 20 itens.

    O problema é que preciso criar a quantidade de linhas de checkboxlist. Ou seja, tenho uma caixa de texto onde o usuário coloca a quantidade de linhas (ex: 5), então deverá aparacer na tela 5 linhas com 20 checkboxes cada.

    Feito isso, preciso guardar os valores de cada checkbox selecionado em banco de dados.

    Estou desenvolvendo isso em um asp.net C#

    Alguém consegue me ajudar?


    Leonardo Feitosa


    "Eu guardei muitas coisas em minhas mãos, e perdi todas; mas todas que coloquei nas mãos de Deus, essas eu ainda possuo." - Martin Luther King, Jr.

    terça-feira, 2 de julho de 2013 14:24

Respostas

  • Leonardo o que vc pode fazer é no aspx vc cria um panel e dentro dele vc colocar os checkbox onde vc pode separa-los por tipo essa descrição vc colocar no panel ou pode criar tambem um fieldset, sendo que checkbox vc terá que verificar um a um para saber qual foi selecionado.


    Junior

    terça-feira, 2 de julho de 2013 14:48
  • Olá Leonardo,

    Segue abaixo um exemplo que tu pode usar. Nele disponibilizo dois métodos, um que tu vais usar para adicionar os checkboxlists na página e outro que tu vai utilizar para percorrer eles.

    ASPX

            <asp:TextBox ID="txtQuantidade" runat="server" />
            <asp:Panel runat="server" ID="pnlConteudo">
    
            </asp:Panel>

    C#

            public void CriaCheckBoxList()
            {
                CheckBoxList list;
                int qtd = Convert.ToInt32(txtQuantidade.Text); //quantidade de linhas
                for (int i = 0; i < qtd; i++) //para cada linha
                {
                    //inicia o objeto
                    list = new CheckBoxList();
                    list.BorderWidth = 1; //adiciono uma borda no checkboxlist, aqui você pode alterar qualquer propriedade do checkboxlist
                    
                    //aqui tu adiciona todos itens que tu precisa ter no teu checkboxlist
                    list.Items.Add(new ListItem("Texto", "Valor"));
                    list.Items.Add(new ListItem("Texto", "Valor"));
                    list.Items.Add(new ListItem("Texto", "Valor"));
                    list.Items.Add(new ListItem("Texto", "Valor"));
                    list.Items.Add(new ListItem("Texto", "Valor"));
                    list.Items.Add(new ListItem("Texto", "Valor"));
                    list.Items.Add(new ListItem("Texto", "Valor"));
                    list.Items.Add(new ListItem("Texto", "Valor"));
    
                    //adiciona o checkboxlist no panel 
                    pnlConteudo.Controls.Add(list);
                }
            }
    
            public void LeCheckBoxList()
            {
                //para cada controle no panel
                foreach (Control item in pnlConteudo.Controls)
                {
                    //se for do tipo CheckBoxList
                    if (item.GetType() == typeof(CheckBoxList))
                    {
                        //para cada list item do checkboxlist
                        foreach (ListItem listItem in ((CheckBoxList)item).Items)
                        {
                            //se o item estiver selecionado
                            if (listItem.Selected)
                            {
                                //aqui tu implementa a rotina para salvar os dados no teu banco
                            }                        
                        }
                    }
                }
            }

    Se a resposta for útil, não esqueça de marcar ;) 


    • Editado Alexandre Rapaki terça-feira, 2 de julho de 2013 15:10 comentário no código
    • Sugerido como Resposta Alexandre Rapaki terça-feira, 2 de julho de 2013 16:05
    • Marcado como Resposta Leonardo Feitosa quarta-feira, 3 de julho de 2013 12:47
    terça-feira, 2 de julho de 2013 15:08

Todas as Respostas

  • Leonardo o que vc pode fazer é no aspx vc cria um panel e dentro dele vc colocar os checkbox onde vc pode separa-los por tipo essa descrição vc colocar no panel ou pode criar tambem um fieldset, sendo que checkbox vc terá que verificar um a um para saber qual foi selecionado.


    Junior

    terça-feira, 2 de julho de 2013 14:48
  • Olá Leonardo,

    Segue abaixo um exemplo que tu pode usar. Nele disponibilizo dois métodos, um que tu vais usar para adicionar os checkboxlists na página e outro que tu vai utilizar para percorrer eles.

    ASPX

            <asp:TextBox ID="txtQuantidade" runat="server" />
            <asp:Panel runat="server" ID="pnlConteudo">
    
            </asp:Panel>

    C#

            public void CriaCheckBoxList()
            {
                CheckBoxList list;
                int qtd = Convert.ToInt32(txtQuantidade.Text); //quantidade de linhas
                for (int i = 0; i < qtd; i++) //para cada linha
                {
                    //inicia o objeto
                    list = new CheckBoxList();
                    list.BorderWidth = 1; //adiciono uma borda no checkboxlist, aqui você pode alterar qualquer propriedade do checkboxlist
                    
                    //aqui tu adiciona todos itens que tu precisa ter no teu checkboxlist
                    list.Items.Add(new ListItem("Texto", "Valor"));
                    list.Items.Add(new ListItem("Texto", "Valor"));
                    list.Items.Add(new ListItem("Texto", "Valor"));
                    list.Items.Add(new ListItem("Texto", "Valor"));
                    list.Items.Add(new ListItem("Texto", "Valor"));
                    list.Items.Add(new ListItem("Texto", "Valor"));
                    list.Items.Add(new ListItem("Texto", "Valor"));
                    list.Items.Add(new ListItem("Texto", "Valor"));
    
                    //adiciona o checkboxlist no panel 
                    pnlConteudo.Controls.Add(list);
                }
            }
    
            public void LeCheckBoxList()
            {
                //para cada controle no panel
                foreach (Control item in pnlConteudo.Controls)
                {
                    //se for do tipo CheckBoxList
                    if (item.GetType() == typeof(CheckBoxList))
                    {
                        //para cada list item do checkboxlist
                        foreach (ListItem listItem in ((CheckBoxList)item).Items)
                        {
                            //se o item estiver selecionado
                            if (listItem.Selected)
                            {
                                //aqui tu implementa a rotina para salvar os dados no teu banco
                            }                        
                        }
                    }
                }
            }

    Se a resposta for útil, não esqueça de marcar ;) 


    • Editado Alexandre Rapaki terça-feira, 2 de julho de 2013 15:10 comentário no código
    • Sugerido como Resposta Alexandre Rapaki terça-feira, 2 de julho de 2013 16:05
    • Marcado como Resposta Leonardo Feitosa quarta-feira, 3 de julho de 2013 12:47
    terça-feira, 2 de julho de 2013 15:08
  • Obrigado, Júnior e Alexandre!

    Alexandre, consegui implementar aqui o seu código, agora estou vendo aqui qual a melhor forma de eu persistir essa seleção de checkboxes em banco de dados. 

    Atenciosamente,

    Leonardo.


    Leonardo Feitosa


    "Eu guardei muitas coisas em minhas mãos, e perdi todas; mas todas que coloquei nas mãos de Deus, essas eu ainda possuo." - Martin Luther King, Jr.

    quarta-feira, 3 de julho de 2013 12:49