2013-06-18 227 views
2

這是我的代碼。 XAML:數據網格中未顯示數據

<DataGrid AutoGenerateColumns="False" ItemsSource="{Binding }" Height="200" Name="dataGrid1" Width="200" /> 

CS:

SqlConnection thisConnection = new SqlConnection(@"Server=(local);Database=Sample_db;Trusted_Connection=Yes;"); 
thisConnection.Open();  
string Get_Data = "SELECT * FROM emp"; 
SqlCommand cmd = thisConnection.CreateCommand(); 
cmd.CommandText = Get_Data; 
SqlDataAdapter sda = new SqlDataAdapter(cmd);    
DataTable dt = new DataTable("emp"); 
sda.Fill(dt); 
// MessageBox.Show(cmd.CommandText); 
dataGrid1.ItemsSource = dt.DefaultView; 

它顯示行grid.Not實際data.Kindly幫助。 在此先感謝。

+0

你的'dt'包含一些行嗎? – WiiMaxx

+0

@WiiMaxx我在我的表中有3行,並在SQL Server中正確顯示。 – EHS

+0

啊傻我剛剛刪除'ItemsSource =「{綁定}」' – WiiMaxx

回答

0

如果您使用的ItemSource必須生成一個ItemTemplate。 Binding WPF DataGrid to DataTable using TemplateColumns

而是使用的DataContext:

SqlConnection thisConnection = new SqlConnection(@"Server=(local);Database=Sample_db;Trusted_Connection=Yes;"); 
       thisConnection.Open();  
       string Get_Data = "SELECT * FROM emp"; 
       SqlCommand cmd = thisConnection.CreateCommand(); 
       cmd.CommandText = Get_Data; 
       SqlDataAdapter sda = new SqlDataAdapter(cmd);    
       DataTable dt = new DataTable("emp"); 
       sda.Fill(dt); 
       // Here:     
       dataGrid1.DataContext = dt.DefaultView; 

的DataContext是FrameworkElement的所有後代的一般(依賴)屬性。是通過從父項到子項的邏輯樹繼承的,可以用作DataBinding的隱式源。它本身並沒有做任何事情,你必須基本上禁止它。

的ItemsSource是導出的控制(或HierarchicalDataTemplate)的屬性識別在一個ItemsControl爲模板生成物品的來源。

2

Datatable不會AutoGenerateColumns="False"生成datagrid行。

請其更改爲AutoGenerateColumns="True"<Datagrid.Columns>屬性添加你自己的數據列。