Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在WPF应用程序的DataGrid中显示SQL查询的结果_C#_Sql_Wpf_Xaml_Datagrid - Fatal编程技术网

C# 在WPF应用程序的DataGrid中显示SQL查询的结果

C# 在WPF应用程序的DataGrid中显示SQL查询的结果,c#,sql,wpf,xaml,datagrid,C#,Sql,Wpf,Xaml,Datagrid,查询的结果在SqlDataReader中,它可以具有灵活的列数和大量的行数 string mySQLQuery= "select * from myTable"; SqlCommand myTableCommand = new SqlCommand(mySQLQuery, MyConnection); SqlDataReader myReader = null; myReader = myTableCommand.ExecuteReader(); 我想做的是在DataGri

查询的结果在SqlDataReader中,它可以具有灵活的列数和大量的行数

string mySQLQuery= "select * from myTable";
SqlCommand myTableCommand = new SqlCommand(mySQLQuery, MyConnection);
SqlDataReader myReader = null;
myReader = myTableCommand.ExecuteReader();
我想做的是在DataGrid中显示结果。.xaml部分如下所示:

<DataGrid Name="myDataGrid" SelectionMode="Extended" SelectionUnit="Cell" AutoGenerateColumns="True" AlternatingRowBackground="LightCyan" 
    ItemsSource="{Binding}" IsEnabled="True" IsReadOnly="True" Background="WhiteSmoke" Margin="13,27,8,110" CanUserSortColumns="True">
</DataGrid>
 ID   |  Name  |  Country  | City
------------------------------------
 123  |  John  |  England  | London
------------------------------------
 456  |  Jane  |  Ireland  | Dublin
 ...     ...        ...       ... 
此链接中的所有答案都有助于:
解决方案

多亏了“user1672994”,此解决方案现在可以工作了:

string mySQLQuery= "select * from myTable";
SqlCommand myTableCommand = new SqlCommand(mySQLQuery, MyConnection);
DataTable dt = new DataTable();
SqlDataAdapter a = new SqlDataAdapter(myTableCommand );
a.Fill(dt);
myDataGrid.ItemsSource = dt.DefaultView;

解决方案

多亏了“user1672994”,此解决方案现在可以工作了:

string mySQLQuery= "select * from myTable";
SqlCommand myTableCommand = new SqlCommand(mySQLQuery, MyConnection);
DataTable dt = new DataTable();
SqlDataAdapter a = new SqlDataAdapter(myTableCommand );
a.Fill(dt);
myDataGrid.ItemsSource = dt.DefaultView;

尝试使用
DataTable
添加行和列,然后将DataTable指定为网格的
ItemsSource
属性。在XAML中,您不需要
ItemsSource=“{Binding}
。@user1672994谢谢。这似乎是一个很好的解决方案,但我得到了一些奇怪的结果;一个包含以下列的表:“
rowrerror,RowState,table,ItemArray,hasrerrors
“。为了将DataTable分配给myDataGrid.ItemsSource,我必须首先将DataTable转换为IEnumerable。所以我这样做了:
myDataGrid.ItemsSource=myDataTable.AsEnumerable()没有错误,但正如我所说,结果很奇怪。尝试使用
DataTable
添加行和列,然后将DataTable指定为网格的
ItemsSource
属性。在XAML中,您不需要
ItemsSource=“{Binding}
。@user1672994谢谢。这似乎是一个很好的解决方案,但我得到了一些奇怪的结果;一个包含以下列的表:“
rowrerror,RowState,table,ItemArray,hasrerrors
“。为了将DataTable分配给myDataGrid.ItemsSource,我必须首先将DataTable转换为IEnumerable。所以我这样做了:
myDataGrid.ItemsSource=myDataTable.AsEnumerable()没有错误,但正如我所说,结果很奇怪。