我想用dataGrid更新数据库(SQLite)。 我可以更改dataGrid中的值,但更改不适用于数据库 那就是为什么我想添加一个按钮“保存”以保存在dataGrid中应用的所有更改,
我搜索了问题,但找不到答案
这是我的C#代码,用于填充DataGrid:
SQLiteConnection sQLiteConnection = new SQLiteConnection("Data source = dataSet.db ; version = 3 ;");
SQLiteCommand sQLiteCommand;
SQLiteDataAdapter sQLiteDataAdapter;
System.Data.DataTable dataTable = new System.Data.DataTable("Naamaa");
SQLiteCommandBuilder cmd;
DataSet ds;
public ManipulateData(string wilaya, int theme)
{
InitializeComponent();
try
{
sQLiteConnection.Open();
sQLiteCommand = new SQLiteCommand(sQLiteConnection);
sQLiteCommand.CommandText = "SELECT * FROM " + wilaya + " ;";
sQLiteCommand.ExecuteNonQuery();
sQLiteDataAdapter = new SQLiteDataAdapter(sQLiteCommand);
sQLiteDataAdapter.Fill(dataTable);
McDataGrid.ItemsSource = dataTable.DefaultView;
}catch
{
MessageBox.Show("Error");
}
}
这是xaml代码:
<Grid Background="White">
<DataGrid x:Name="McDataGrid" />
</Grid>
答案 0 :(得分:0)
目前我正在做一些非常相似的事情,只是我正在使用Postgres。
一种简单的方法是将DataGridView.ReadOnly属性设置为true,然后,当用户在DataGridView中选择一行时,您可以启动Windows窗体,其中包含该选定行中的所有数据以及一个“保存”按钮,更新数据库中的数据。然后,从该按钮中,您只需要使用从表单中收集的数据启动对数据库的更新查询。
如果要修改DataGridView本身上的数据,事情将变得更加复杂,因为您需要跟踪在DataGridView上已编辑了哪些行(除非您不关心优化,而可以对每个单独的行进行更新行,无论是否已对其进行编辑)。您可以将DataGridViewRow的列表用于所有已修改的行。
那可以理解吗?不太习惯写英语,特别是在相当复杂的事情上。