c# - 如何使用 DataGrid C# WPF 更新数据库?
问题描述
我想用 dataGrid 更新数据库(SQLite)。我可以更改 dataGrid 中的值,但更改不适用于数据库,这就是为什么我要添加一个按钮“保存”来保存在 dataGrid 中应用的所有更改,
我搜索了这个问题,但我找不到答案
这是我填充 DataGrid 的 C# 代码:
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>
解决方案
我目前正在做一些非常相似的事情,只是我使用的是 Postgres。
一种简单的方法是将 DataGridView.ReadOnly 属性设置为 true,然后当用户在 DataGridView 中选择一行时,您可以启动一个 Windows 窗体,其中包含该选定行中的所有数据和一个“保存”按钮来更新数据数据库。然后从该按钮,您只需使用从表单收集的数据启动对数据库的更新查询。
如果您想修改 DataGridView 本身的数据,事情会变得更加复杂,因为您需要跟踪在 DataGridView 上编辑了哪些行(除非您不关心优化并且可以对每一行进行更新,不不管它是否已被编辑)。您可以对所有修改的行使用 DataGridViewRow 列表。
这可以理解吗?不太习惯写英文,特别是在相当复杂的事情上。
推荐阅读
- javascript - 不和谐机器人记录器
- javascript - 为什么 this.health 在这种情况下不起作用?
- html - 使用 Jquery 加载填充 div 但阻止特定脚本?
- javascript - 当用户取消选择平面列表项目时删除项目
- git - 有没有办法列出远程存储库跟踪的所有文件?
- r - 定义要在 data.table 中的 ID 重复项中删除的变量
- flutter - 无法为涉及 ListView.builder() 颤动的列设置动态高度
- php - 如何将当前日期与 Laravel 数据表中的前一个日期进行比较
- java - 不能在不抛出 FileNotFoundException 的情况下声明全局静态 Scanner 对象?
- reactjs - 模拟交叉获取