代码之家  ›  专栏  ›  技术社区  ›  sharp

DataGrid更新C#WPF

  •  0
  • sharp  · 技术社区  · 10 年前

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

    我的主表“用户”:

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

    还有两张桌子: 成员名称

    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)
    

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

    现在我的代码是这样工作的。我创造了 SQLiteCommand 每个 Query 并执行它。填补我的 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>
    
    1 回复  |  直到 10 年前
        1
  •  0
  •   sharp    10 年前

    好的,我已经解决了这个。。。 我做的 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);
    
    推荐文章