Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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.
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
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
>
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.
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?
Porque não fazer em HTML?