none
Combobox no WPF e DataSet RRS feed

  • Pergunta

  • Preciso muito de ajuda, sou iniciante na programação e em wpf. Depois de várias tentativas indo já para a 3 semana sem muitos resultados, decidi pedir ajuda.

    Preciso de um Combobox em WPF que liste os itens (CREDITO/DEBITO). Quando selecionar CREDITO é preciso que grave na tabela FLXCONTROLGERAL no campo inteiro TPFLXCONTROLGERAL o código 1 e quando selecionar DEBITO grave o código 2. 

    --------------------------

    Abaixo o código do DataSet:

            private ProjetosDBDataSet dsFlxControlGeral = new ProjetosDBDataSet();
            private ProjetosDBDataSetTableAdapters.FLXCONTROLGERALTableAdapter taFlxControlGeral = new ProjetosDBDataSetTableAdapters.FLXCONTROLGERALTableAdapter();
            private ProjetosDBDataSetTableAdapters.TableAdapterManager tamFlxControlGeral = new ProjetosDBDataSetTableAdapters.TableAdapterManager();
            private CollectionView view;

    --------------------------

    No Xaml:

                <ComboBox Canvas.Left="61" Canvas.Top="39" Height="23" Width="120" x:Name="cmbTipo"
                              DisplayMemberPath="TpFlxControlGeralNome"
                              SelectedValuePath="TpFlxControlGeralID"
                              SelectedValue="{Binding Source={StaticResource dataProvider}, Path=TipoCode}"
                              Text="{Binding TipoFluxoControlGeralClasse, ElementName=cmbTipo, Path=TPFLXCONTROLGERAL}"/>
                <Label Canvas.Left="183" Canvas.Top="39" Content="Data" Height="29" Name="label3" />
                <TextBox Canvas.Left="222" Canvas.Top="39" Height="23" Name="txtData" Width="107" Text="{Binding Path=DATA}"/>

    -------------------------------------------------

    Obs: No TexBox o valor digitado é gravado, mas no combobox não consigo. Desde já agradeço.

    domingo, 12 de agosto de 2012 02:36

Respostas

  • Depois de muitas tentativas mas Graças a DEUS consegui encontrar a solução, deixo abaixo a solução se alguém vier a passar pelo mesmo problema. Antes quero agradecer também a Ucha pela sua dica.
    Sobre o problema, tenho o campo  TPFLXCONTROLGERAL e preciso salvar o código TPFLXCONTROLGRLID selecionado no combobox  neste campo
    Segue o código com a solução funcionando:
    No xaml:
            <ComboBox x:Name="cmbTipo" Grid.Row="2" Grid.Column="1"  
                      IsEditable="False"
                      Height="23" Width="120" 
                      SelectedValue="{Binding Path=TPFLXCONTROLGERAL}"

                        ====> Este é o campo que deve receber o valor
                      DisplayMemberPath="TpFlxControlGeralNome"

                        ===> Está é a descrição que deverá aparecer no ComboBox
                      SelectedValuePath="TpFlxControlGeralID">

                         ===> Este é o ID que será gravado no campo acima descrito no SelectedValue

            </ComboBox>

    No código em C#:
            private List<TipoFluxoControlGeralClasse> GetTipoFluxoControlGeralClasse()
            {
                List<TipoFluxoControlGeralClasse> tipoFluxoControlGeralClasse = new List<TipoFluxoControlGeralClasse>();
                tipoFluxoControlGeralClasse.Add(new TipoFluxoControlGeralClasse() { TpFlxControlGeralID = 1, TpFlxControlGeralNome = "CREDITO" });
                tipoFluxoControlGeralClasse.Add(new TipoFluxoControlGeralClasse() { TpFlxControlGeralID = 2, TpFlxControlGeralNome = "DEBITO" });
                return tipoFluxoControlGeralClasse;
            }

    Espero ajudar com a solução acima se alguém estiver passando pelo mesmo problema.

    • Marcado como Resposta FernandoGGarcia terça-feira, 11 de setembro de 2012 14:51
    terça-feira, 11 de setembro de 2012 14:49

Todas as Respostas

  • Ao invés de usar o campo SelectedValue do ComboBox, utilize o campo SelectedItem.
    sexta-feira, 17 de agosto de 2012 20:50
  • Ucha eu fiz o que você me falou, mas não deu certo. Quando o formulário é carregado monta o combobox com os itens CREDITO e DEBITO, quando seleciona CREDITO no combobox deve gravar num campo INTEIRO o código 1 (campo: TPFLXCONTROLGERAL), quando seleciona DEBITO o codigo 2 deve ser gravado. E também ao mudar de registro deve aparecer na tela CREDITO ou DEBITO conforme o que foi gravado no registro e se o campo estiver vazio no combobox também não deve ter nada. Acredito que a solução esteja no xaml (alguma ligação do componente com o DataSet dsFlxControlGeral), mas não consigo encontrar a solução. Precisava de um exemplo, pois sou muito novato. Sem mais agradeço desde já.
    sábado, 25 de agosto de 2012 18:28
  • Depois de muitas tentativas mas Graças a DEUS consegui encontrar a solução, deixo abaixo a solução se alguém vier a passar pelo mesmo problema. Antes quero agradecer também a Ucha pela sua dica.
    Sobre o problema, tenho o campo  TPFLXCONTROLGERAL e preciso salvar o código TPFLXCONTROLGRLID selecionado no combobox  neste campo
    Segue o código com a solução funcionando:
    No xaml:
            <ComboBox x:Name="cmbTipo" Grid.Row="2" Grid.Column="1"  
                      IsEditable="False"
                      Height="23" Width="120" 
                      SelectedValue="{Binding Path=TPFLXCONTROLGERAL}"

                        ====> Este é o campo que deve receber o valor
                      DisplayMemberPath="TpFlxControlGeralNome"

                        ===> Está é a descrição que deverá aparecer no ComboBox
                      SelectedValuePath="TpFlxControlGeralID">

                         ===> Este é o ID que será gravado no campo acima descrito no SelectedValue

            </ComboBox>

    No código em C#:
            private List<TipoFluxoControlGeralClasse> GetTipoFluxoControlGeralClasse()
            {
                List<TipoFluxoControlGeralClasse> tipoFluxoControlGeralClasse = new List<TipoFluxoControlGeralClasse>();
                tipoFluxoControlGeralClasse.Add(new TipoFluxoControlGeralClasse() { TpFlxControlGeralID = 1, TpFlxControlGeralNome = "CREDITO" });
                tipoFluxoControlGeralClasse.Add(new TipoFluxoControlGeralClasse() { TpFlxControlGeralID = 2, TpFlxControlGeralNome = "DEBITO" });
                return tipoFluxoControlGeralClasse;
            }

    Espero ajudar com a solução acima se alguém estiver passando pelo mesmo problema.

    • Marcado como Resposta FernandoGGarcia terça-feira, 11 de setembro de 2012 14:51
    terça-feira, 11 de setembro de 2012 14:49