mercredi 2 septembre 2015

DataGrid update C# WPF

I'm stuck on my small project, and urgently need some advice and help. First of I'll start from my database. My database, 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>

Aucun commentaire:

Enregistrer un commentaire