none
SelectedIndex em dataGrid com JOIN RRS feed

  • Pergunta

  • Ola estou utilizando C# WPF e estou com o seguinte problema.

    Preencho o datagrid da seguinte forma:

    XAML:

    <DataGrid x:Name="dtProduto"
                      RenderOptions.ClearTypeHint="Enabled"
                      TextOptions.TextFormattingMode="Display"
                      Margin="5,123,5,181"
                      SelectionUnit="FullRow"
                      ItemsSource="{Binding}"
                      SelectedValuePath="Id"
                      AutoGenerateColumns="false" 
                      IsReadOnly="True"
                      SelectionChanged="dtProduto_SelectionChanged" 
                      >
                <DataGrid.Columns>
                    <DataGridTextColumn Binding="{Binding Path=Id}" Header="Codigo"/>
                    <DataGridTextColumn Binding="{Binding Path=Descricao}" Header="Descricao" />
                    <DataGridTextColumn Binding="{Binding Path=VlCusto}" Header="Vl. Custo" />
                    <DataGridTextColumn Binding="{Binding Path=VlVenda}" Header="Vl. Venda" />
                    <DataGridTextColumn Binding="{Binding Path=Estoque}" Header="Estoque" />
                    <DataGridTextColumn Binding="{Binding Path=UnidadeId}" Header="Unidade" />
                    <DataGridTextColumn Binding="{Binding Path=MarcaId}" Header="Marca" />
                </DataGrid.Columns>
            </DataGrid>
    CODE:
    using (LojaModelContainer db = new LojaModelContainer())
                {
                    List<Produto> prod = db.Produtos.ToList();
                    dtProduto.ItemsSource = prod;
                }

    Porem no lugar de exibir a UnidadeId e MarcaId eu gostaria de exibir a descrição da marca e da unidade que estao na tabela de marca e unidade.
    Eu até consegui exibir elas através de um query mas no momento que tento pegar o SelectedIndex ele me retorna um erro no seguinte trecho.

    if (dtProduto.SelectedIndex > -1)
                {
                    Produto prod = (Produto)dtProduto.SelectedItem;
    
                    idProd = prod.Id;
                }

    Teria outra formar de pegar o Id do produto sem determinar o tipo(produto)?

    quarta-feira, 16 de março de 2016 00:31

Respostas

  • Boa noite.

    Como dito por ti, provavelmente com o Join que tu fizeste, o Source do DataGrid é um anonymous type.

    Sendo assim, talvez utilizando um dynamic já resolva o problema de pegar o Id do Produto (que não é mais um produto per se):

    dynamic prod = dtProduto.SelectedItem;
    
    idProd = prod.Id;

    Att., Rafael Simor

    • Marcado como Resposta Marcos SJ quarta-feira, 16 de março de 2016 13:13
    quarta-feira, 16 de março de 2016 01:14

Todas as Respostas

  • Boa noite.

    Como dito por ti, provavelmente com o Join que tu fizeste, o Source do DataGrid é um anonymous type.

    Sendo assim, talvez utilizando um dynamic já resolva o problema de pegar o Id do Produto (que não é mais um produto per se):

    dynamic prod = dtProduto.SelectedItem;
    
    idProd = prod.Id;

    Att., Rafael Simor

    • Marcado como Resposta Marcos SJ quarta-feira, 16 de março de 2016 13:13
    quarta-feira, 16 de março de 2016 01:14
  • Nao conhecia o dynamic. Vou testar e coloco a resposta aqui. Obrigado
    quarta-feira, 16 de março de 2016 01:49
  • SimorC de volta ao fórum!!

    :D


    Marcos SJ

    Esse conteúdo e fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    quarta-feira, 16 de março de 2016 13:13
  • Bom dia, Marcos!

    Pois é, estou planejando me mudar para o Canadá (correndo atrás do MCSD, logo procurando vagas por Toronto), então minha vida está focada nisso, mas agora já resolvi bastantes pendências e pretendo interagir mais aqui.

    :D


    Att., Rafael Simor

    quarta-feira, 16 de março de 2016 13:32
  • SimorC,

    Que massa!

    Desejo que dê tudo certo pra você por lá. Obrigado por sua participação no fórum.

    Valew!

    :D


    Marcos SJ

    Esse conteúdo e fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    quarta-feira, 16 de março de 2016 18:09
  • Rafael Simor funcionou perfeitamente. Muito obrigado.
    quinta-feira, 17 de março de 2016 02:13