繁体   English   中英

DataGrid更新C#WPF

[英]DataGrid update C# WPF

我的数据库有三个表,并在启动应用程序时创建了三个视图。 用于创建表的代码是:

我的主表“用户”:

CREATE  TABLE  IF NOT EXISTS users(id INTEGER PRIMARY KEY  AUTOINCREMENT  NOT NULL , name VARCHAR(100), surname VARCHAR(100), ... id_membership_name integer, id_activity integer,... FOREIGN KEY (id_membership_name) REFERENCES membership_name(membership_id),FOREIGN KEY (id_activity integer) REFERENCES membership_activity(activity_id) );

还有另外两个表:membership_name

CREATE TABLE IF NOT EXISTS membership_name(membership_id integer,membership_name varchar(200));

会员活动

CREATE TABLE IF NOT EXISTS membership_activity(activity_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, activity_name varchar(200));

主要视图是:

CREATE VIEW IF NOT EXISTS user_details AS SELECT users.name, users.surname ... membership_name.membership_name,membership_activity.activity_name... FROM
LEFT OUTER JOIN membership_name ON (users.id_membership_name = membership_name.membership_id)
LEFT OUTER JOIN membership_activity ON (users.id_activity = membership_activity.activity_id)

其他视图仅从表中选择所有内容。 *我缩短了代码,因为有更多的数据,这在视觉上更具可读性。

现在我的代码以这种方式工作。 我为每个Query创建SQLiteCommand并执行它。 要填充我的DataGrid我只需填充DataTable

DataTable dataTable = new DataTable();
dataAdapter.Fill(dataTable);
this.GridView1.ItemsSource = dataTable.AsDataView();

为了向表中插入数据,我进行了基本的INSERT query 哪个工作正常。 现在我的问题是创建UPDATE命令。 我需要这样做,以便当我双击一个单元格时它可以进行编辑,然后按Enter键将其保存到数据库中。

和我的XAML列都一样,只是其他标头名称和绑定。

<DataGridTextColumn Header="Name" Width="*" Binding="{Binding Name, Mode = TwoWay}"></DataGridTextColumn>

好的,我已经解决了这个问题。。。我使SQLiteCommand成为一个简单的SQL查询,可以从TextBoxes获取所有值,并在具有该ID的行中更新它们。

/*get id of values from comboboxes*/
int membership_name = int.Parse(membership_name_box.SelectedValue.ToString());
int id_activity = int.Parse(id_activity_box.SelectedValue.ToString());

这是UPDATE查询:

 UPDATE user SET name=@name,surname=@surname ,/*a lot more data*/ id_membership_name=@id_membership_name,id_activity=@id_activity WHERE id = @id;

所以基本上这是整个更新...

SQLiteCommand cm = new 

SQLiteCommand(Properties.Resources.update_datagrid, connection);
    cm.Parameters.AddWithValue("@id", id);
    cm.Parameters.AddWithValue("@name", name_box.Text);
    cm.Parameters.AddWithValue("@surname", surname_box.Text);
    //more parameters
    //also more parameters
    //again the same
cm.Parameters.AddWithValue("@id_membership_name", membership_name);
cm.Parameters.AddWithValue("@id_activity", id_activity);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM