Pessoal, postei uma dúvida no Fórum do Dev Brasil e recebi uma excelente resposta do colega Ramon Wolff Zaccaron.
Pergunta: gostaria de saber como adicionar os items de um listbox para um checkboxlist, só tem um pequeno detalhe: se no listbox tiver algum item repetido ou vazio, ele não deve adicionar no checkboxlist.
Resposta: Antes de lhe ajudar na sua dúvida, quero lhe informar que existe mais de uma maneira de resolver este problema.
Abaixo segue o código que acredito suprir sua necessidade:
protected void btnAdd_Click(object sender, EventArgs e)
{
IList<ListItem> chklList = new List<ListItem>();
foreach (ListItem item in this.lstSource.Items)
{
//Caso a variável item necessite de algum tratamento
//realizar neste ponto.
if ((!string.IsNullOrEmpty(item.Text)) && !chklList.Contains(item))
{
chklList.Add(item);
}
}
if (chklList.Count > 0)
{
foreach (ListItem item in chklList)
{
this.chklTarget.Items.Add(item);
//this.chklTarget.Items.Add(item.Text);
}
}
}
...onde:
lstSource - Control ListBox;
chklTarget - Controle CheckBoxList;
btnAdd - Controle Button que utilizei para adicionar os itens.
Primeiramente eu declaro um objeto do tipo IList<ListItem>, não sei qual sua necessidade mas eu fiz com uma lista deste tipo pois cada item de um ListBox ou CheckBoxList é deste tipo compondo um ListItemCollection. Pode alterar para outro tipo (primitivo ou não). Este objeto irá receber a lista filtrada do ListBox.
Com um "foreach" eu percorro os itens do ListBox. Note o meu comentário onde o tratamento dos valores do ListBox deve ocorrer, caso precise. Trabalhar com a variável pode ser necessário (LTrim, RTrim, Replace, etc.) se você estiver utilizando um IList do tipo string por exemplo.
A seguir, a verificação que você especificou é realizada, onde neste exemplo a propriedade Text é verificada, você pode também verificar a propriedade Value se for o caso.
Caso não haja irregularidades com a variável, a mesma é adicionada em nossa lista. A verificação será realizada com cada item do ListBox.
Por fim, uma validação é feita na lista verificando se esta possui items. Caso sim, adiciona no controle CheckBoxList (chklTarget). Note que o método Add possui duas sobrecargas, a primeira irá adicionar o item igual como está no ListBox e suas propriedades (Text, Value...). A segunda sobrecarga irá adicionar o texto dos itens do ListBox, ou seja as propriedades Value e Text será a mesma, o que funcionará normal, porém, caso valores e textos são diferentes no ListBox, neste controle será igual.
Cátia, um refactor será bem vindo neste código, validações podem ser necessárias, caso você não saiba quais dados podem estar listados no ListBox, se forem valores estáticos fica mais fácil. Caso tenha alguma dúvida pode perguntar ou caso não funcione informe que a gente discute o assunto.
Quem quiser ver na íntegra: http://devbrasil.net/group/cdesenvolvendores/forum/topics/adicionando-items-do-listbox?commentId=2307362%3AComment%3A95735&xg_source=msg_com_gr_forum
25 de mai. de 2011
24 de mai. de 2011
99º Dia
Boa Noite!
Neste dia finalizei o que estava dando errado na parte do CheckBoxList..
Finalmente consegui acertar!
Abraço!
Neste dia finalizei o que estava dando errado na parte do CheckBoxList..
Finalmente consegui acertar!
Abraço!
ASP .net - Intermediário e Avançado
Fica a dica para quem quiser dar uma olhada: http://pt.scribd.com/doc/41214767/Apostila-ASP-net-Pt-br-1
Começando - C# e VB
Para quem quiser aprender as diferenças e semelhanças entre as duas recomendo: http://pt.scribd.com/doc/47172219/asp35 . É uma apostila de fácil entendimento e bem simples, bem explicado..
Vale a pena dar uma olhada!
Vale a pena dar uma olhada!
Criando custom controls – CheckBoxList com AutoValidação
Alguma vez para resolver um problema você precisou utilizar 2 ou mais controles ASP.NET e ao mesmo tempo pensou: Porque não existe um único controle com todas essas funcionalidades?
Para resolver esse problema, você utilizar um template de WebControlLibrary e criar controles com as funcionalidades que você precisa para sua toolbar.
O que queremos
Precisamos de um CheckBoxList que tenha uma propriedade do tipo boolean, onde possamos informar se o controle requer alguma informação ou não.
A Base
Crie um projeto de WebControlLibrary com seu Visual Studio 2005. O Nome do meu projeto é “CheckBoxList AutoValidator” e com ele foi criado o namespace CheckBoxList_AutoValidator.
Quando o projeto é criado, com ele temos uma classe WebCustomControl1.cs criada também. Exclua essa classe e vamos criar outra classe a partir do template WebCustomControl chamada de MyCheckBoxList.
É criada junta com a nova classe uma propriedade default chamada Text. Vamos altera - lá para o nosso propósito.
Altere o valor Category para “Custom”, o valor da propriedade , altere o nome da propriedade de Text para AutoValidator. Apague a diretiva DefaultPorperty. O valor da diretiva DefaultValue deverá ser igual a true. Será necessário alterar o tipo de dados de String para Boolean da propriedade AutoValidator e fazer com que a classe herde de CheckBoxList e não de WebControl. O Resultado da sua classe será igual à Listagem 01.
Listagem 01 – Código da inicial da classe do MyCheckBoxList.
Com isso nós já temos um controle com uma propriedade customizada. Temos agora criar um método para a “Auto Validação”. Então altere a assinatura da classe para que a mesma além de herdar de CheckBoxList, implemente a Interface IValidator.
Implementando IValidator
Você será obrigado a implementar um método de assinatura void Validate(), e duas propriedades, bool IsValid e string ErrorMessage.
Veja a Listagem 02 à implementação.
Listagem 02 – Trechos obrigatórios após implementar a interface IValidator.
Ainda não começamos a programar o método Validate(). Antes de começar a escrever o código de validação vamos relembrar o que vamos fazer para ter certeza que o controle contém dados inválidos.
Vamos percorrer todos os itens do CheckBoxList e se existir pelo menos 1 selecionado, o controle é válido. Então vamos ver a implementação de código do método Validate na Listagem 03.
Listagem 03 – Validação do controle.
Agora mais um detalhe antes de finalizar e testarmos o controle. Temos que garantir que a página realmente não seja submetida por falha da nossa validação. Vamos isso adicionado o nosso controle dentro dos Validators no momento de validação, dentro do “Ciclo de vida de página” (Page Life Cycle). Para maiores detalhes sobre o assunto acesse ASP.NET Page Life Cycle Overview. Veja na Listagem 04 o código para executarmos essa ação.
Listagem 04 – Adicionando o controle na coleção de Validators da página.
Para testar tudo o que foi feito até agora, compile o projeto. Copie a DLL que estará dentro da pasta bin/debug para um outro local (Sugestão: C:\Arquivos de programas\Microsoft Visual Studio 8\Common7\IDE), adicione o seu controle customizado na toolbar (clique com o botão direito no mouse e escolha a opção “Choose Items” e selecione a DLL na pasta onde você a copiou).
Agora com o seu custom control na toolbar, você precisa apenas de uma aplicação web para teste. A página onde ocorrerá o teste deverá conter apenas o seu controle e um sumary validator para capturar a mensagem de erro que você personalizou. O resultado dever ser algo muito parecido com a Figura 01.
Figura 01 – Imagem a esquerda com erro e a direita sem erro.
Autor: Daniel Cazé.
Fonte: http://www.devmedia.com.br/post-7981-Criando-custom-controls-CheckBoxList-com-AutoValidacao.html
23 de mai. de 2011
98º Dia
Boa Noite!
Continuei arrumando a mesma coisa: http://estcatia.blogspot.com/2011/05/97-dia.html
Porém estava arrumando este erro:
Abraço!
Continuei arrumando a mesma coisa: http://estcatia.blogspot.com/2011/05/97-dia.html
Porém estava arrumando este erro:
Abraço!
21 de mai. de 2011
6ª Aula
Boa Noite!!
Hoje aconteceu mais uma aula de inclusão digital.
O conteúdo repassado aos alunos foi o BrOfficeImpress, onde eles aprenderam a criar apresentações de slides inserindo imagens, texto, figuras, sons, plano de fundo, transição de slides e também programaram o tempo que cada slide apareceria na tela.
Hoje aconteceu mais uma aula de inclusão digital.
O conteúdo repassado aos alunos foi o BrOfficeImpress, onde eles aprenderam a criar apresentações de slides inserindo imagens, texto, figuras, sons, plano de fundo, transição de slides e também programaram o tempo que cada slide apareceria na tela.
20 de mai. de 2011
97º Dia
Boa Noite!
Continuei arrumando a mesma coisa: http://estcatia.blogspot.com/2011/05/96-dia.html
Abraço!
Continuei arrumando a mesma coisa: http://estcatia.blogspot.com/2011/05/96-dia.html
Abraço!
19 de mai. de 2011
96º Dia
Boa Noite!
Continuei arrumando a mesma coisa: http://estcatia.blogspot.com/2011/05/95-dia.html
Abraço!
Continuei arrumando a mesma coisa: http://estcatia.blogspot.com/2011/05/95-dia.html
Abraço!
18 de mai. de 2011
95º Dia
Boa Noite!
Continuei arrumando a mesma coisa: http://estcatia.blogspot.com/2011/05/94-dia.html
Abraço!
Continuei arrumando a mesma coisa: http://estcatia.blogspot.com/2011/05/94-dia.html
Abraço!
Assinar:
Postagens (Atom)
