none
Problema com ListBox RRS feed

  • Pergunta

  • Boa Tarde Forum,

    Tenho uma tela de cadastro na qual possuí um componente LISTBOX. Este componente está ativado para o modo de seleção multipla.

    Quando o usuário realiza o cadastro, ele pode escolher N valores presente no listbox (valores que vem do banco). Quando o usuario salva este cadastro, eu salvo os valores selecionados no banco também.

    Minha questão é a seguinte: Como faço para na tela de alteração aparecer no componente listbox os campos que já foram selecionados pelo usuário na hora do cadastro? Recuperar estes valores? Ou seja, tenho no listbox 10 ítens que vem do banco (por exemplo) mas o usuário quando cadastro só selecionou 3ítens, como faço para vir os 3ítens já selecionados na tela de alteração?

    Obrigada!

     


    Fernanda Lobo
    sexta-feira, 4 de junho de 2010 20:04

Respostas

  • Fernanda tente desta forma seu laço For:

     

          for (int i = 0; i < lbAux.Items.Count; i++)
          {
            this.lbCat.Items.FindByValue(lbAux.Items[i].Value).Selected = true;
          }


    MSN: poseidonfba@hotmail.com
    • Marcado como Resposta Fernanda Lobo sábado, 5 de junho de 2010 18:16
    sábado, 5 de junho de 2010 17:57

Todas as Respostas

  • VB NET ou C# ??

    MSN: poseidonfba@hotmail.com
    sexta-feira, 4 de junho de 2010 21:57
  • Vc pode tentar algo mais ou menso assim

     

    public void Salvar() {
      var selecionados = listBox1.SelectedItems;
      try {
        // Gravar, recarregar o grid etc...
      } finally {
        foreach (var item in selecionados) {
          var index = listBox1.Items.IndexOf(item);
          if (index >= 0) listBox1.SelectedIndices.Add(index);
        }
      }
    }


    What would Brian Boitano do ?
    ((2B || !2B) is Question) ?
    sexta-feira, 4 de junho de 2010 23:10
    Moderador
  • Olá, é C#.

    O que estou fazendo atualmente é:

    .....
    .....
    .....
    //Preencho ListBox Categoria
    cfBO CfBO = new cfBO();
    lbCat.DataSource = CfBO.ConsultarTodosPf();
    lbCat.DataTextField =
    "Cf_Nome";
    lbCat.DataValueField =
    "Cf_Cod";
    lbCat.DataBind();

    depois tenho:
    //Seleciona os codigos de items que foram cadastrados e jogo num listBox auxiliar tudo.
    ....
    ....
    ....
    fontesHasCfBO fcfBO = new fontesHasCfBO();
    Fontes_has_CategoriaFonte fcf = new Fontes_has_CategoriaFonte();
    lbAux.DataSource = fcfBO.ConsultarTodos(id);
    lbAux.DataTextField =
    "Fontes_Cod_Fonte";
    lbAux.DataValueField =
    "Categoria_Fontes_Cf_Cod";
    lbAux.DataBind();
    for (int i = 0; i < lbAux.Items.Count; i++)
    {
    this.lbCat.SelectedValue = lbAux.Items[i].Value;
    }

    O que acontece é que, neste FOR ele traz na tela selecionado apenas UMA categoria e nao todas. Provavelmente tem algo que não estou sabendo fazer para um nao anular o outro, sei lá... mas ele me traz na tela apenas uma categoria selecionada e nao varias como tenho no BD. Quando debugo ele passa no for varias vezes, mas na hora de mostrar o resultado só mostra selecionado do ultimo que ele passou no for.

    Obrigada.


    Fernanda Lobo
    sábado, 5 de junho de 2010 17:32
  • Fernanda tente desta forma seu laço For:

     

          for (int i = 0; i < lbAux.Items.Count; i++)
          {
            this.lbCat.Items.FindByValue(lbAux.Items[i].Value).Selected = true;
          }


    MSN: poseidonfba@hotmail.com
    • Marcado como Resposta Fernanda Lobo sábado, 5 de junho de 2010 18:16
    sábado, 5 de junho de 2010 17:57
  • POSEIDON,

    Obrigada pela ajuda! Era exatamente isto. Agora resolveu o problema.

    Grata.

     


    Fernanda Lobo
    sábado, 5 de junho de 2010 18:17