簡體   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