我在 MyController
中有一个方法 Load
:
public void Load(ItemsControl control, string commandText)
{
try
{
_db.OpenConnection();
using (SQLiteCommand command = new SQLiteCommand(commandText, _db.Connection))
using (SQLiteDataAdapter dataAdapter = new SQLiteDataAdapter(command))
{
DataTable dataTable = new DataTable();
dataAdapter.Fill(dataTable);
control.ItemsSource = dataTable.AsDataView();
}
}
catch (Exception exp)
{
//...;
}
}
然后在XAML
中我有:
<DataGrid x:Name="DataGrid_1" ... AutoGenerateColumns="True" Loaded="DataGrid_1_Loaded">
最后在 DataGrid_1_Loaded()
中,我调用方法 Load()
,如下所示:
MyController.Load(DataGrid_1, "CREATE VIEW IF NOT EXISTS content_for_dg AS SELECT name,surname FROM people");
当我运行该程序时,我在 Data_Grid_1
顶部看到一点空白,但没有列,也没有数据。我使用 SQLite 浏览器打开数据库, View content_for_dg
存在并包含正确的数据...
我错过了什么?为什么数据没有显示在 DataGrid
中?
最佳答案
如果我删除 using (SQLiteCommand command = new SQLiteCommand(commandText, _db.Connection))
并以这种方式创建 SQLiteDataAdapter
SQLiteDataAdapter dataAdapter = new SQLiteDataAdapter(commandText ,_db.Connection)
,然后就可以正常工作了...
public void Load(ItemsControl control, string commandText)
{
try
{
_db.OpenConnection();
using (SQLiteDataAdapter dataAdapter = new SQLiteDataAdapter(commandText, _db.Connection))
{
DataTable dataTable = new DataTable();
dataAdapter.Fill(dataTable);
control.ItemsSource = dataTable.AsDataView();
}
}
catch (Exception exp)
{
//...;
}
}
关于c# - 使用 C# 和 WPF 将数据从 SQLite 绑定(bind)到 DataGrid,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50356191/