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;  

它在网格上显示线。不是实际数据。请帮助。提前致谢。

4

2 回答 2

2

Datatable 不会生成带有AutoGenerateColumns="False".

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

于 2013-06-18T12:45:41.657 回答
0

如果您使用 ItemSource,您必须生成一个 ItemTemplate。 使用 TemplateColumns 将 WPF DataGrid 绑定到 DataTable

改用 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 所有后代的通用(依赖)属性。Is 是通过从父级到子级的逻辑树继承的,可以用作 DataBinding 的隐式源。它本身不做任何事情,您基本上必须对其进行数据绑定。

ItemsSource 是标识 ItemsControl 派生控件(或 HierarchicalDataTemplate)中项的模板生成源的属性。

于 2013-06-18T12:42:12.530 回答