簡體   English   中英

MySQL / C#提交DataGridView單元格編輯是否更改?

[英]MySQL / C# Commit DataGridView Changes on cell edit?

我有一個包含5個dataGridViews的Form,並且需要能夠在單擊單元格時將對視圖所做的更改保存到View,類似於在Excel中的工作方式。

這是我的連接信息: public static MySqlConnection db = new MySqlConnection(); public string jobnumber = ""; public string str = "SERVER=192.168.1.149; DATABASE=starflitesystems; UID=iuapp; " + "Password=iuapp"; public static MySqlConnection db = new MySqlConnection(); public string jobnumber = ""; public string str = "SERVER=192.168.1.149; DATABASE=starflitesystems; UID=iuapp; " + "Password=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;
}

基本上,這會將某些信息加載到我的dataGridViews中,但是現在,在加載數據之后,我需要能夠單擊一個單元格,對其進行編輯,並在焦點離開該單元格后自動將更改提交到表中。

我在網上查找了一些有關它的內容,但是它們似乎都使用了不同的方法來連接數據庫,因此我認為它們不會對我有用。

我的理論是我需要為每個塊使用d(在dg1.SelectedRows中的行r){},但是我不確定該怎么做。

任何幫助都將不勝感激。

您可以像這樣使用DataGridView.CellEnd Edit事件:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM