数据未显示在datagrid中

时间:2013-06-18 12:31:31

标签: c# sql-server wpf

这是我的代码。 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;  

它在网格上显示一行。没有实际的数据。亲切的帮助。 提前谢谢。

2 个答案:

答案 0 :(得分:2)

Datatable 不会使用AutoGenerateColumns="False"生成数据网格行。

请将其更改为AutoGenerateColumns="True"或在<Datagrid.Columns>属性中添加您自己的数据列。

答案 1 :(得分: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是标识ItemsControl派生控件(或HierarchicalDataTemplate)中模板生成项的源的属性。