Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# MySQL/C是否在单元格编辑时提交DataGridView更改?_C#_Mysql_Datagridview - Fatal编程技术网

C# MySQL/C是否在单元格编辑时提交DataGridView更改?

C# MySQL/C是否在单元格编辑时提交DataGridView更改?,c#,mysql,datagridview,C#,Mysql,Datagridview,我有一个包含5个DataGridView的表单,我需要能够在单击单元格时保存对视图的更改,这与在Excel中的工作方式类似 这是我的连接信息: public static MySqlConnection db=新建MySqlConnection; 公共字符串jobnumber=; 公共字符串str=SERVER=192.168.1.149;数据库=starflitesystems;UID=iuapp+ 密码=iuapp 我的表格开放代码: public frmPricingTemplate_St

我有一个包含5个DataGridView的表单,我需要能够在单击单元格时保存对视图的更改,这与在Excel中的工作方式类似

这是我的连接信息: public static MySqlConnection db=新建MySqlConnection; 公共字符串jobnumber=; 公共字符串str=SERVER=192.168.1.149;数据库=starflitesystems;UID=iuapp+ 密码=iuapp

我的表格开放代码:

public frmPricingTemplate_Start(string s)
{
    InitializeComponent();

    createTempTable();

    setDGVQueries();

    hidePanels(pnlBasePackage);
    btnReset(btnBasePackage);

    this.WindowState                = FormWindowState.Maximized;

    jobnumber                       = s;
    txtJobNumber.Text               = s;
    comboBox1.Visible               = false;
    comboBox2.Visible               = false;
    dataGridRefresh();

    dg2.AutoSizeColumnsMode         = DataGridViewAutoSizeColumnsMode.Fill;
    dg3.AutoSizeColumnsMode         = DataGridViewAutoSizeColumnsMode.Fill;
    dg4.AutoSizeColumnsMode         = DataGridViewAutoSizeColumnsMode.Fill;
    dg5.AutoSizeColumnsMode         = DataGridViewAutoSizeColumnsMode.Fill;
}
我的数据库查询:

public void setDGVQueries()
{
    /* Strings for dataGridViews */
    selectDGV1 = "SELECT `Group`, Material, `Sub-Material` " +
                                            "FROM temporary_table " +
                                            "WHERE tab='" + activeTab + "';";

    selectDGV2 = "SELECT Quantity as `Quantity`, Cost as `Cost` " +
                                            "FROM temporary_table " +
                                            "WHERE tab='" + activeTab + "';";

    selectDGV3 = "SELECT Quantity2 as `Quantity`, Cost2 as `Cost` " +
                                            "FROM temporary_table " +
                                            "WHERE tab='" + activeTab + "';";

    selectDGV4 = "SELECT Quantity3 as `Quantity`, Cost3 as `Cost` " +
                                            "FROM temporary_table " +
                                            "WHERE tab='" + activeTab + "';";

    selectDGV5 = "SELECT Quantity as `Quantity`, Cost as `Cost` " +
                                            "FROM temporary_table " +
                                            "WHERE tab='" + activeTab + "';";
}
我的数据库刷新功能:

public void dataGridRefresh()
{
    /* Define all dataTables for the dataGridViews */
    MySqlDataAdapter return1 = new MySqlDataAdapter(selectDGV1, str);
    DataTable dt1 = new DataTable("base");
    return1.Fill(dt1);

    MySqlDataAdapter return2 = new MySqlDataAdapter(selectDGV2, str);
    DataTable dt2 = new DataTable("base");
    return2.Fill(dt2);

    MySqlDataAdapter return3 = new MySqlDataAdapter(selectDGV3, str);
    DataTable dt3 = new DataTable("base");
    return3.Fill(dt3);

    MySqlDataAdapter return4 = new MySqlDataAdapter(selectDGV4, str);
    DataTable dt4 = new DataTable("base");
    return4.Fill(dt4);

    MySqlDataAdapter return5 = new MySqlDataAdapter(selectDGV5, str);
    DataTable dt5 = new DataTable("base");
    return5.Fill(dt5);

    /* Set DataSources for all datagridViews */
    dg1.DataSource = dt1;
    dg2.DataSource = dt2;
    dg3.DataSource = dt3;
    dg4.DataSource = dt4;
    dg5.DataSource = dt5;
}
基本上,这会将某些信息加载到我的DataGridView中,但是现在,在加载数据之后,我需要能够单击单元格,编辑它,并让它在焦点离开单元格后自动将更改提交到表中

我在网上查了一些关于它的东西,但它们似乎都使用了不同的方法来连接数据库,所以我认为它们对我不起作用

我的理论是,我需要为dg1.SelectedRows{}块中的每一行r使用一个`字符,但我不确定到底该怎么做

非常感谢您提供的任何帮助。

您可以使用以下活动:

private void Form_Load(object sender, EventArgs e)
    { 
         myDataDridView.CellEndEdit += new DataGridViewCellEventHandler(myDataDridView_CellEndEdit);
    }
然后:

private void myDataDridView_CellEndEdit(object sender, DataGridViewCellEventArgs e)
    {
         try
         {
              // Your update query here
         }
         catch (Exception ex)
         {
              MessageBox.Show(ex.Message);
         }
    }

既然您是从同一个表(临时表)进行查询,为什么不尝试在一个DataGridView中完成所有操作?项目经理的决定,而不是我的决定。但这不是问题所在。我可以轻松地写几行来刷新其他DataGridView。问题是当单元格失去焦点时更新基础表的代码。但是,对此的更新查询是什么?这就是我的全部问题。我可以很好地访问事件。