2016-01-13 51 views
1

我想用postgres數據庫中的數據填充組合框,但我不能得到它的工作。鏈接WPF Combobox與Postgres數據庫值

C#代碼:

private void fill_combo() 
{ 
    string CommandText = "select ida from antenne"; 
    using (NpgsqlConnection sqlConn = new NpgsqlConnection("server=localhost;port=5432;user=postgres;pwd=password;database=BDTelecom")) 
    { 
     sqlConn.Open(); 
     NpgsqlCommand sqlCmd = new NpgsqlCommand(CommandText, sqlConn); 
     NpgsqlDataAdapter da = new NpgsqlDataAdapter(sqlCmd); 
     DataTable dt = new DataTable(); 
     da.Fill(dt); 
     comboBox.Text = "ida"; 
    } 
} 

XAML代碼:

<ComboBox x:Name="comboBox" 
      HorizontalAlignment="Left" Height="23" VerticalAlignment="Top" Width="170" 
      ItemsSource="{Binding}" /> 

任何想法?

+0

數據表中要在組合框中查看的列的名稱是什麼? –

+0

我想顯示'ida' – geocoder

+0

如果你只是想顯示'ida',你爲什麼需要數據庫數據? –

回答

0

假設在數據表(數據庫中列的名稱)的字段名稱爲"ida",是string型的,你需要做這樣的事情:

comboBox.ItemsSource = 
    dt.Rows 
    .Cast<DataRow>() 
    .Select(x => x.Field<string>("ida")); 
+0

'DataTable'ne contient pas dedéfinitionpour'ItemsSource'et aucuneméthoded'extension'ItemsSource'。 :( – geocoder

+0

對不起,我的意思是說'comboBox.ItemsSource'。看到更新的代碼。 –

+0

現在它的工作原理,謝謝 – geocoder

0

你檢索數據,但你不能把它分配給ComboBox

分配dt爲源,並設置列名希望用戶看到的。

... 
da.Fill(dt); 
comboBox.ItemsSource = dt.DefaultView; 
comboBox.DisplayMemberPath = "ida"; 
+0

'comboBox.ItemsSource = dt'中的dt'帶下劃線,「Impossible de convertir implicitement le type'System.Data.DataTable'en 'System.Collections.IEnumerable'。」 – geocoder

+0

@geocoder固定。 –

+0

它的工作原理謝謝:D:D – geocoder