Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

nakid.mkt

Cascada de checkboxes

Recommended Posts

Pessoal, estou tentando fazer uma cascata de checkbox como:

 

http://www.sebdigital.com.br/imagens/CascataCheckBox.jpg

 

 

Pensei em trabalhar com repeater, com as cidades dentro de <ul> como:

<ul>
  <li>São Paulo</li>
  <li>
     <ul>
        <li>Campinas</li>
        <li>Santos</li>
        <li>Ribeirão Preto</li>
     </ul>
  </li>
</il>

 

Mas não estou conseguindo estruturas os componentes. Sou iniciante em ASP.Net e em PHP isso era tão fácil...

não estou conseguindo nem atribuir o value no componente checkbox <asp:CheckBox ID="CheckBox1" runat="server" />

no html é <input type="checkbox" value="simples assim">

 

Algum norte?

 

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

o CheckBox tem a propriedade Checked=true ou Checked=false

 

<asp:CheckBox ID="Campinas" runat="server" checked="true" />

 

então se quiser usar vai ter que usar assim e sair comparado o que precisar, tipo em VB:

 

if (Campinas.Checked = true)then

'comandos

 

ElseIf (RibPreto.Checked=true)then

'comandos

End If

Compartilhar este post


Link para o post
Compartilhar em outros sites

uma opção seria utiliza o objeto treeview: http://forum.imasters.com.br/topic/269401-aspnet-carregar-e-buscar-na-treeview/

 

e pra fazer o check ALL: http://forums.asp.net/t/976122.aspx

 

Obrigado Pessoal

 

João, Html Não Dá porque meus dados vem do banco de dados.

 

Murilo, meu problema é atribuir value="" no checkbox, e não checked="true". Mas parece que com asp.net o método é outro. Acho que eu estou tentando programar em Sap.Net com pensamento de PHP.

 

Eriva, obrigado pela dica. Muito interessante mesmo seu artigo. Problemas no meu caso.

1) Uso relacionamento n pra n, e esse método de treeview só aceia 1 pra n. Pelo menos foi a mensagem de erro retornado na minha aplicação.

2) Uma coisa que eu acho muito ruim no ASP.Net é que ele tem tudo pronto (isso é muito bom), mas de um jeito que você fica refém do componente. Por exemplo: a TreeView é muito interessante mas usa Table. Eu não quero usar table. Fica com uma formatação de css que já está definida pra listagens, enfim. Quero usar <ul><li></li></ul>.

 

Obrigado por hora.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Estou chegando numa solução:

 

no aspx:

 <asp:Repeater ID="rptEstado" runat="server" 
                   onitemdatabound="rptEstado_ItemDataBound">
                   <HeaderTemplate>
                       <ul ID="publicacao">
                   </HeaderTemplate>

                   <ItemTemplate>
                       <li>
                           <asp:CheckBox ID="cbEstado" runat="server" />                        
                           <asp:Label ID="lbEstado" runat="server" Text='<%# Eval("Nome").ToString() %>'></asp:Label>
                       </li>
                       <li>
                           <asp:Repeater ID="rptCidade" runat="server">
                               <HeaderTemplate>
                                   <ul>
                               </HeaderTemplate>
                               <ItemTemplate>
                                   <li>
                                       <asp:CheckBox ID="cbCidade" runat="server" />                        
                                       <asp:Label ID="lbCidade" runat="server" Text='<%# Eval("NomeSite").ToString() %>'></asp:Label>
                                   </li>
                               </ItemTemplate>
                               <FooterTemplate>
                                   </ul>
                               </FooterTemplate>


                           </asp:Repeater>                            
                       </li>
                   </ItemTemplate>

                   <FooterTemplate>
                       </ul>
                   </FooterTemplate>


               </asp:Repeater>

 

 

No aspx.cs:

 
//chamada no onPageLoad
private void carregarEstados()
   {
       DataTable dtEstados = new DataTable();
       try
       {
           conexao = bancoDeDados.abrirConexao();
           sql.Connection = conexao;
           sql.CommandType = CommandType.Text;
           sql.CommandText = "Select * from Estados";
           dtEstados .Load(sql.ExecuteReader());
           rptEstado.DataSource = dtEstados ;
           rptEstado.DataBind();
       }
       catch { }
       finally
       {
           bancoDeDados.fecharConexao(conexao);
       } 

       return;
   }

   protected void  rptEstado_ItemDataBound(object sender, RepeaterItemEventArgs e)
   {

       DataTable dtCidade = new DataTable();
       Repeater rptCidade = (Repeater)e.Item.FindControl("rptCidade");


       try
       {            
           conexao = bancoDeDados.abrirConexao();
           sql.Connection = conexao;
           sql.CommandType = CommandType.Text;
           sql.CommandText = "Select Cidade.Nome, Cidade.IdCidade From Cidade Where IdEstado = 3";
           dtCidade .Load(sql.ExecuteReader());
           rptCidade.DataSource = dtCidade ;
           rptCidade.DataBind();
       }
       catch { }
       finally
       {
           bancoDeDados.fecharConexao(conexao);
       }

       return;



   }

 

Onde estou parado: O meu sql sempre pega o id = 3 para Estado... esse id tem que ser o id do estado listado naquela linha. Que vem um id diferente em cada dataBound. Alguma Luz?

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.