2013-06-18 38 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>属性添加你自己的数据列。