none
Como preencher uma combo e uma list usando Binding RRS feed

  • Pergunta

  • Boa tarde pessoal

     

    Gostaria de preencher uma combobox e um list com valores vindo diretamente de um banco de dados

    crie projetos separados porque é como eu vou utilizar.

     

    namespace ClassLibrary1

    {

    public class Class1

    {

    public DataTable PegaListaUf()

    {

    OleDbConnection cn = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Inventer\bdinventer.mdb");

    OleDbDataAdapter da;

    StringBuilder sql = new StringBuilder();

    DataSet ds = new DataSet();

    cn.Open();

    sql.Append("Select * from tbtab_uf");

    da = new OleDbDataAdapter(sql.ToString(), cn);

    da.Fill(ds);

    cn.Close();

    return ds.Tables[0];

    }

    }

    }

     

    <ComboBox Height="22" Margin="56,88,42,0" Name="comboBox1" VerticalAlignment="Top" ItemsSource="{Binding Source={StaticResource Classe1.PegaListaUf}}"

    DisplayMemberPath="{Binding Nome}" SelectedValuePath="{Binding Codigo}"/>

     

    compila normalmente porem quando mando executar nao aparece nenhum valor na combobox

     

    Grato pela ajuda

    sexta-feira, 14 de março de 2008 17:35

Respostas

  • Mais ou menos: Class1 está no namespace ClassLibrary1 e deve ter o prefixo "y" no Xaml. Além disso, você não criou uma instância do objeto. O código deveria ser mais ou menos assim:

    <ObjectDataProvider ObjectType=”{x:Type y:Class1}”" MethodName="PegaListaUf" x:Key="Estado">

    </ObjectDataProvider>


    O resto deveria funcionar

    Bruno
    sábado, 5 de abril de 2008 09:03
  • Para isso, você deve criar um DataTemplate. Veja meu artigo no CodeProject (http://www.codeproject.com/KB/WPF/wpfviews.aspx)

    Para deixar o primeiro item selecionado, faça SelectedIndex = 0

    Se a resposta solucionou a sua dúvida, marque-a como tal, para que os outros possam se aproveitar da resposta.

    Bruno
    domingo, 6 de abril de 2008 08:42

Todas as Respostas

  • Aqui você está fazendo binding com o método da classe, isso não funciona. Você tem que construir um ObjectDataProvider e usar o método lá. Veja este post da Bea Costa que mostra como fazer isso: http://www.beacosta.com/blog/?m=200603

    Este meu artigo como fazer o binding direto com o BD usando Linq: http://www.codeproject.com/KB/WPF/wpfviews.aspx

    Bruno
    terça-feira, 18 de março de 2008 15:42
  • Bruno

     

    Agradeço pela atenção

     

    Não sei se conseguir entender direito o que a bea costa colocou la

     

    <Window x:Class="Exemplo5.Window1"

    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

    xmlns:y="clr-namespace:ClassLibrary1;assembly=ClassLibrary1"

    Title="Window1" Height="327" Width="352">

    <Window.Resources>

    <ObjectDataProvider ObjectInstance="StaticResource Class1" MethodName="PegaListaUf" x:Key="Estado">

    </ObjectDataProvider>

    </Window.Resources>

    <Grid>

     

    <ComboBox Height="22" Margin="56,88,42,0" Name="comboBox1" VerticalAlignment="Top" ItemsSource="{Binding Source={StaticResource Estado}}"

    DisplayMemberPath="{Binding Nome}" SelectedValuePath="{Binding Codigo}"/>

    </Grid>

    </Window>

     

    Seria isso ?

    sexta-feira, 4 de abril de 2008 13:21
  • Mais ou menos: Class1 está no namespace ClassLibrary1 e deve ter o prefixo "y" no Xaml. Além disso, você não criou uma instância do objeto. O código deveria ser mais ou menos assim:

    <ObjectDataProvider ObjectType=”{x:Type y:Class1}”" MethodName="PegaListaUf" x:Key="Estado">

    </ObjectDataProvider>


    O resto deveria funcionar

    Bruno
    sábado, 5 de abril de 2008 09:03
  • Bruno

     

    Agradeço pela ajuda funcionou da maneira que voce mencionou. So que na descrição da combobox estar aparecendo

    System.Data.DataRowView e não os nomes dos estados que estao no banco. Outr pergunta seria teria alguma maneira de eu ja deixar selecionado o primeiro item da combo pelo Xaml.

     

    sábado, 5 de abril de 2008 13:20
  • Para isso, você deve criar um DataTemplate. Veja meu artigo no CodeProject (http://www.codeproject.com/KB/WPF/wpfviews.aspx)

    Para deixar o primeiro item selecionado, faça SelectedIndex = 0

    Se a resposta solucionou a sua dúvida, marque-a como tal, para que os outros possam se aproveitar da resposta.

    Bruno
    domingo, 6 de abril de 2008 08:42
  • Como faço para colocar dois Campos de uma tabela no Combo por exemplo aparecer o ANO e o MES Juntos...
    terça-feira, 22 de julho de 2008 12:37