none
Retornar linha selecionada no ListBox RRS feed

  • Pergunta

  • Boa tarde pessoal!

    Estou utilizando um ListBox que é populado por um Dictionary<int,string>. A tela consiste em dois Lists (selecionar opções desejadas no primeiro e passar para o list ao lado), bem simples. 

    listDisponiveisSelecionados = new Dictionary<int, string>();
    
                    DataTable
    dataTable = dsRetorno.Tables[0];
                    foreach (DataRow 
    item in dataTable.Rows)
                    {
                        listDisponiveisSelecionados.Add(Convert.ToInt32(item.Field<decimal>("cd_setor").ToString()), item.Field<string>("ds_setor").ToString());
                    }
    
                    listBoxDisponiveis.DataSource = listDisponiveisSelecionados;
                    ListDisponiveisSelecionados = listDisponiveisSelecionados;
                    listBoxDisponiveis.DataTextField = "Value";
                    listBoxDisponiveis.DataValueField = "Key";
                    listBoxDisponiveis.DataBind();

    Porém, no evento OnSelectedIndexChanged do primeiro ListBox eu não consigo resgatar a linha selecionada, nem seus valores. 

    O retorno é nulo executando o código : listBoxDisponiveis.Items[meucontador].Selected

    O fato de ser populado por um dicionário tem alguma referência? Em caso negativo, alguma ideia? 

    Desde já obrigada!


    • Editado Aretha Lemos sexta-feira, 5 de outubro de 2012 19:18
    sexta-feira, 5 de outubro de 2012 19:13

Respostas

  • E ae tuca, conseguiu resolver o seu problema?

    Se a resposta foi útil por favor qualifique! Janderson Candido de Mattos - MCPD

    • Marcado como Resposta Aretha Lemos segunda-feira, 8 de outubro de 2012 12:05
    • Não Marcado como Resposta Aretha Lemos segunda-feira, 8 de outubro de 2012 12:06
    • Marcado como Resposta Aretha Lemos segunda-feira, 8 de outubro de 2012 12:06
    segunda-feira, 8 de outubro de 2012 11:16
  • E ae tuca, blz?

    Uma coisa para você presta atenção é não esqueçer desta validação para não carregar o seu controle novamente a cada post.

    if (!IsPostBack)
    {
      Dictionary<int, string> listDisponiveisSelecionados = new Dictionary<int, string>();
      listDisponiveisSelecionados.Add(1, "teste");
      listDisponiveisSelecionados.Add(2, "teste2");

      ListBox1.DataSource = listDisponiveisSelecionados;
      ListBox1.DataTextField = "Value";
      ListBox1.DataValueField = "Key";
      ListBox1.DataBind();
    }

    Para recuperar o valor d ListBox você pode fazer desta forma:

    protected void ListBox1_SelectedIndexChanged(object sender, EventArgs e)
    {
      var teste = ListBox1.SelectedValue;
      teste = ListBox1.SelectedItem.Text;
    }


    Se a resposta foi útil por favor qualifique! Janderson Candido de Mattos - MCPD

    • Marcado como Resposta Harley Araujo segunda-feira, 8 de outubro de 2012 12:03
    sábado, 6 de outubro de 2012 13:52

Todas as Respostas

  • E ae tuca, blz?

    Uma coisa para você presta atenção é não esqueçer desta validação para não carregar o seu controle novamente a cada post.

    if (!IsPostBack)
    {
      Dictionary<int, string> listDisponiveisSelecionados = new Dictionary<int, string>();
      listDisponiveisSelecionados.Add(1, "teste");
      listDisponiveisSelecionados.Add(2, "teste2");

      ListBox1.DataSource = listDisponiveisSelecionados;
      ListBox1.DataTextField = "Value";
      ListBox1.DataValueField = "Key";
      ListBox1.DataBind();
    }

    Para recuperar o valor d ListBox você pode fazer desta forma:

    protected void ListBox1_SelectedIndexChanged(object sender, EventArgs e)
    {
      var teste = ListBox1.SelectedValue;
      teste = ListBox1.SelectedItem.Text;
    }


    Se a resposta foi útil por favor qualifique! Janderson Candido de Mattos - MCPD

    • Marcado como Resposta Harley Araujo segunda-feira, 8 de outubro de 2012 12:03
    sábado, 6 de outubro de 2012 13:52
  • E ae tuca, conseguiu resolver o seu problema?

    Se a resposta foi útil por favor qualifique! Janderson Candido de Mattos - MCPD

    • Marcado como Resposta Aretha Lemos segunda-feira, 8 de outubro de 2012 12:05
    • Não Marcado como Resposta Aretha Lemos segunda-feira, 8 de outubro de 2012 12:06
    • Marcado como Resposta Aretha Lemos segunda-feira, 8 de outubro de 2012 12:06
    segunda-feira, 8 de outubro de 2012 11:16
  • Sim Janderson, acredito que era o fato de eu não manter o estado do controle  realmente. 

    Obrigada!

    segunda-feira, 8 de outubro de 2012 12:05