none
Pegar Primary Key em um ListPicker‎ RRS feed

  • Pergunta

  • Olá..

    Iniciante...

    Estou precisando pegar valor dentro de um ListPicker que eu carrego através de web service do BD, o problema que quando uso a propriedade SelectedIndex não me retorna o valor correspondente a Primary Key,

    Código XAML:

        <TextBlock x:Name="item" Text="{Binding FilNom}" FontSize="26" Margin="10, 6, 0, 8" />
         <TextBlock x:Name="item2" Text="{Binding FilCod}" FontSize="26" Margin="10, 6, 0, 8" Visibility="Collapsed"/>
     CodeBehind:
    this.lpFilial.ItemsSource = e.Result.ToList();

    Carrega os Nomes ok, a questão e como pegar o Código correto e detalhe.. tem caso que trabalho com chave composta..

    todo help é bem vindo ;)

    valeu

                        

    sexta-feira, 19 de outubro de 2012 18:17

Respostas

  • Eu passei por uma dúvida dessas, só que no meu caso o ListPicker era preenchido por um list de uma classe:

    string sPN = (((Model.ParceirosNegocios)lpParceiros.SelectedItem).RazaoSocial);


    Model.ParceirosNegocios = Minha classe;

    Espero ter ajudado.


    Brian Souza - MCP Desenvolvedor C#.Net


    • Sugerido como Resposta Brian Souza quarta-feira, 14 de novembro de 2012 18:38
    • Editado Brian Souza quarta-feira, 14 de novembro de 2012 18:39 Erro de digitação
    • Marcado como Resposta wasy segunda-feira, 19 de novembro de 2012 11:16
    quarta-feira, 14 de novembro de 2012 18:38

Todas as Respostas

  • Cara,

    Eu passei por esta dificuldade também e resolvi da seguinte maneira:

    //Pegar Código da Categoria selecionada
    Int32 iCategoria = 0;
    
    for (int i = 0; i < this.lstCategoria.Items.Count; i++)
        {
            if (this.lstCategoria.Items[i].ToString() == this.lstCategoria.SelectedItem.ToString())
            {
                iCategoria = Convert.ToInt32(lstCategoriaValue.Items[i].ToString());
                break;
            }
        }

    Guardo o SelectedIndex e depois faço uma busca no controle (ou List) até chegar na posição guardada, afinal, SelectedIndex é a posição do registro na lista. No caso de chaves compostas, faça com que sua classe contenha estas informações da chave e você vai encontrar os dados da chave composta quando chegar no Index correto.

    Devem existir outras maneiras, mas esta tem sido útil e performática porque não utilizo listas grandes.

    Abraço.


    Andrey Kurka


    sexta-feira, 19 de outubro de 2012 21:38
  • boa a idéa Andrey do List auxiliar... adicionei um auxiliar alimentando apenas com o campo da chave primaria e posso pegar o valor do auxiliar com base no index do original

    lpAux.Items[this.lpFilial.SelectedIndex].ToString()

    o problema que está vindo o nome do objeto.. não o valor do campo..

    Index    PK        O que Vem
    0          1          PhoneApp.tb_Filial
    1          2          PhoneApp.tb_Filial
    2          4          PhoneApp.tb_Filial
    3          8          PhoneApp.tb_Filial

    agora falta trazer o valor correto e não o objeto.. e porque consigo visualizar correto dentro do ListPicker os valores ?

    segunda-feira, 22 de outubro de 2012 11:22
  • Utiliza o SelectedItem.

    Olha este post que vai te ajudar. Qualquer dúvida é só chamar.

    Abraço.


    Andrey Kurka

    segunda-feira, 22 de outubro de 2012 12:34
  • Eu passei por uma dúvida dessas, só que no meu caso o ListPicker era preenchido por um list de uma classe:

    string sPN = (((Model.ParceirosNegocios)lpParceiros.SelectedItem).RazaoSocial);


    Model.ParceirosNegocios = Minha classe;

    Espero ter ajudado.


    Brian Souza - MCP Desenvolvedor C#.Net


    • Sugerido como Resposta Brian Souza quarta-feira, 14 de novembro de 2012 18:38
    • Editado Brian Souza quarta-feira, 14 de novembro de 2012 18:39 Erro de digitação
    • Marcado como Resposta wasy segunda-feira, 19 de novembro de 2012 11:16
    quarta-feira, 14 de novembro de 2012 18:38
  • Obrigado Andrey Kurka,

    resolvido conforme diga do Brian Souza

    valeu Brian

    segunda-feira, 19 de novembro de 2012 11:18