简体   繁体   中英

DataGrid update C# WPF

My database has three tables, and three views creates when starting up the application. The code for creating tables is:

My main table "users":

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) );

And two other tables: membership_name

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

membership_activity

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

And the main view is:

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)

Other views just select everything from table. *I have shortened my code because there is a lot more data, this is more visually readable.

Now my code works this way. I create SQLiteCommand for each Query and execute it. To fill my DataGrid I just fill DataTable .

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

To insert data to my table I have made a basic INSERT query . Which works fine. Now my problem is to create the UPDATE command. I need to make it so that when I double click a cell it allows editing and after pressing ENTER is saves it to the database.

And my XAML columns are all the same,just other header name and binding.

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

Okay I have solved this one... I made SQLiteCommand a simple SQL query where I get all values from my TextBoxes and update them where the row has that 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());

This is the UPDATE query:

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

So basically this is whole update...

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);

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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