Usuário com melhor resposta
Erro no meu Combo

Pergunta
-
Galera boa Tarde.
Estou aplicando um combobox na minha aplicação e eu não to conseguindo puxa do banco de dados os dados q la constam.
Vou postar os codigos aqui se alguem conseguir me ajudar ficarei grato.
Este é o meu código XAML.
UserControl x:Class="SilverlightApplication7.MainPage" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:c1="http://schemas.componentone.com/winfx/2006/xaml" mc:Ignorable="d" d:DesignHeight="300" d:DesignWidth="400"> <Grid x:Name="LayoutRoot" Background="White"> <c1:C1ComboBox x:Name="combo" Width="250" Height="23" ItemsSource="{Binding Path=Cor, Mode=OneWay}" SelectedValue="{Binding Path=Cor, Mode=TwoWay}" DisplayMemberPath="Cor" SelectedValuePath="Cor" /> </Grid> </UserControl>
Minha Camada BLL que conecta com o banco
namespace BLL { public class CorBLL { public CorInfoCollection ConsultaCorBLL() { SqlConnection c = new SqlConnection(); string conexao = "Server=********\\**********;Database=Teste;UID=*******;PWD=****"; CorInfoCollection Cor = new CorInfoCollection(); c.ConnectionString = conexao; c.Open(); SqlCommand cmd = c.CreateCommand(); cmd.CommandText = " Select idCor, Cor from TabelaTeste "; SqlDataAdapter da = new SqlDataAdapter(cmd); DataTable dt = new DataTable(); da.Fill(dt); foreach (DataRow dtCor in dt.Rows) { Cor.Add(new CorInfo { IdCor = Convert.ToInt32(dtCor["idCor"]), cor = dtCor["Cor"].ToString(), }); } c.Close(); return Cor; } } }
Minha Camada MODELS
namespace Models { public class CorInfo { private int idCor; public int IdCor { get { return idCor; } set { idCor = value; } } private string Cor; public string cor { get { return Cor; } set { Cor = value; } } } public class CorInfoCollection : List<CorInfo> { } }
A interface do meu serviço (WCF)
[OperationContract] CorInfoCollection ConsultaCorBLL();
Respostas
-
Então altera seu combo, assim:
<c1:C1ComboBox x:Name="combo" Width="250" Height="23" SelectedValue="{Binding Path=Cor, Mode=TwoWay}" DisplayMemberPath="cor" SelectedValuePath="cor" />
Além disso, tem a propriedade ItemSource que não tem necessidade de colocar binding.Samuel Fabel
- Marcado como Resposta Phi Tiago sexta-feira, 6 de julho de 2012 13:21
Todas as Respostas
-
meu serviço (WCF)
public CorInfoCollection ConsultaCorBLL() { CorBLL Cor = new CorBLL(); CorInfoCollection result = null; try { return Cor.ConsultaCorBLL(); } catch { } return result; }
meu código que carrega o serviço e o combo
public partial class MainPage : UserControl { servicoWCF.Service1Client servico = new Service1Client(); public MainPage() { InitializeComponent(); servico.ConsultaCorBLLCompleted += new EventHandler<ConsultaCorBLLCompletedEventArgs>(servico_ConsultaCorBLLCompleted); CarregarCombo(); } private void CarregarCombo() { servico.ConsultaCorBLLAsync(); } void servico_ConsultaCorBLLCompleted(object sender, ConsultaCorBLLCompletedEventArgs e) { combo.ItemsSource = e.Result; } }
A foto da execução do programa:
Se alguem conseguir me ajude, parece q o que esta no meu banco de dados carrega so que ele nao fica visivel.
-
-
-
Não foi o que eu quis dizer.
Quando você colocou o combo no xaml, você fez assim:
<c1:C1ComboBox x:Name="combo" Width="250" Height="23" ItemsSource="{Binding Path=Cor, Mode=OneWay}" SelectedValue="{Binding Path=Cor, Mode=TwoWay}" DisplayMemberPath="Cor" SelectedValuePath="Cor" />
E na Propriedade que é o que se referencia no Combo, colocou assim:
public string cor { get { return Cor; } set { Cor = value; } }
Samuel Fabel
-
Sim Samuel so que se vc reparar tem meu private string e meu public string, ee na minha classe onde eu to fazendo a conexão e faço o meu foreach do meu banco na hora q digito 'Cor' para eu poder pegar as linhas, ele so me libera a 'Cor' com o 'C' minuscolo pq está declarando assim na minha classe MODELS !!.
-
Então altera seu combo, assim:
<c1:C1ComboBox x:Name="combo" Width="250" Height="23" SelectedValue="{Binding Path=Cor, Mode=TwoWay}" DisplayMemberPath="cor" SelectedValuePath="cor" />
Além disso, tem a propriedade ItemSource que não tem necessidade de colocar binding.Samuel Fabel
- Marcado como Resposta Phi Tiago sexta-feira, 6 de julho de 2012 13:21
-
-
No meu perfil tem meu linkedin. Me adiciona lá.
- Editado Samuel Fabel sexta-feira, 6 de julho de 2012 14:11