2011-06-06 86 views
4

我想填充我的WPF應用程序中的dataGrid。從C#中的MySQL數據庫填充dataGrid WPF

我的XAML:

<DataGrid AutoGenerateColumns="True" Height="200" HorizontalAlignment="Left" 
Margin="102,72,0,0" Name="dataGrid1" VerticalAlignment="Top" Width="848" /> 

我後面的代碼:

public void FillGrid() 
    { 
     string MyConString =  
     "SERVER=myserver.com;" + 
     "DATABASE=mydatabase;" + 
     "UID=myuserid;" + 
     "PASSWORD=mypass;"; 

     string sql = "SELECT clientnr, name, address FROM clients ORDER BY name"; 

     MySqlConnection connection = new MySqlConnection(MyConString); 
     MySqlCommand cmdSel = new MySqlCommand(sql, connection); 
     DataTable dt = new DataTable(); 
     MySqlDataAdapter da = new MySqlDataAdapter(cmdSel); 
     da.Fill(dt); 
     dataGrid1.DataContext = dt; 
    } 

我敢肯定,MySQL的部分是正確的,它不會給任何錯誤。 VS10 express不會給出任何錯誤。但是,如果我執行該方法我的dataGrid不會被填充。

我在做什麼錯了?

在此先感謝!

回答

5

設置你的DataGrid的綁定:

<DataGrid ItemsSource="{Binding }" /> 
+0

沒有不NOG工作... :(仍然是空的DataGrid – 2011-06-06 16:32:13

+0

@Lars查看更新設置DataGrid結合。此外,驗證你的'FillGrid '方法正在運行 – Rachel 2011-06-06 16:37:01

+0

我這樣做,但它仍然只顯示空行 – 2014-08-04 12:52:12

2

你肯定希望它被綁定到數據表,而不是適配器,雷切爾建議(適配器的工作就是填充數據表)。此外,它是很好的封裝連接和命令usings,以確保一切都清理了,就像這樣:

public void FillGrid() 
{ 
    string MyConString = 
    "SERVER=myserver.com;" + 
    "DATABASE=mydatabase;" + 
    "UID=myuserid;" + 
    "PASSWORD=mypass;"; 

    string sql = "SELECT clientnr, name, address FROM clients ORDER BY name"; 

    using (MySqlConnection connection = new MySqlConnection(MyConString)) 
    { 
     connection.Open(); 
     using (MySqlCommand cmdSel = new MySqlCommand(sql, connection)) 
     { 
      DataTable dt = new DataTable(); 
      MySqlDataAdapter da = new MySqlDataAdapter(cmdSel); 
      da.Fill(dt); 
      dataGrid1.DataContext = dt; 
     } 
     connection.Close(); 
    } 
} 
+0

nope d oesn't工作... – user1034912 2017-02-08 08:00:14

1

在你的代碼只需調用該方法FillGrid()InitializeComponents()後落後。我只是這樣做,它完全運行

+0

詳情pleaseeeee – user1034912 2017-02-08 08:10:26

2

更換

​​

dataGrid1.ItemsSource = dt.DefaultView;