DataGridView更新數據到數據庫


 

  WinFrom程序綁定了一個DataGridView控件,我需要添加一個button按鈕來更改狀態,還需要把更新之后的狀態更新到數據庫,如下圖所示的這樣:

 

  首先先來拖控件,把界面做出來,自己拖一個DataGridView,出來,然后設置列寬,你可以去屬性那里去設置,也可以寫代碼來控制,代碼如下

this.dataGridView1.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.Fill;

 

  然后呢,再來給DataGridView加button。點擊右上角的小三角,有一個添加列:

  選擇button之后,改名稱什么的自己看吧,有了button之后,只需要在界面上雙擊button就可以進入button事件了,在編輯列里面可以改一些button的屬性,如圖:

 

一、把數據顯示在DataGridView上

我用的是datatable的方式:

 public DataTable DbConnection(string sql,DataTable dt)
        {
            using (SqlConnection con = new SqlConnection(connstr))
            {
                if (con.State == ConnectionState.Closed)
                {
                    con.Open();
                }
                SqlCommand cmd = new SqlCommand(sql, con);
                SqlDataAdapter da = new SqlDataAdapter(cmd);
                da.Fill(dt);
            }
            return dt;
        }
dataGridView1.DataSource = DbConnection(sql,dt);

  有時候你添加了之后表格並不會顯示,這是因為你沒有綁定,再加一行代碼就行了

dataGridView1.DataSource = DbConnection(sql,dt);

 

二、把更改后的數據從DataGridView上同步到數據庫

  這里呢,有幾種情況。例如SqlCommandBuilder 或者 直接寫SQL語句也行,下面就介紹一下這兩種方法吧

   第一種方法:SqlCommandBuilder 

  private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            if (e.RowIndex >= 0)
            {
                DataGridViewColumn column = dataGridView1.Columns[e.ColumnIndex];
                if (column is DataGridViewButtonColumn)
                {
                    //在這里寫你的操作,上面的是判斷你點擊的是哪一個button按鈕 
                }
            }
        }

如果要修改當前行的數據可以這樣:

dataGridView1["PlaceDescribe", e.RowIndex].Value = "已禁用";  //PlaceDescribe是數據庫里面的列名

SqlCommandBuilder :不建議使用,因為我用的時候數據更新有bug,准確率不高,我不知道原因。反正不推薦使用。

using (SqlConnection con = new SqlConnection(connstr))
{
                if (con.State == ConnectionState.Closed)
                {
                    con.Open();
                }
                SqlCommand cmd = new SqlCommand(sql, con);
                da = new SqlDataAdapter(cmd);
                SqlCommandBuilder scb = new SqlCommandBuilder(da);
                try
                {   //強烈建議把這里寫入trycatch語句
                    da.Update(db.DbConnection(sql,dt));
                    MessageBox.Show("保存成功");
                }
                catch (Exception)
                {
                     throw;
                }
}                         

 

剩下的這個就是直接寫sql語句了,這個很簡單

    setSql = "update RtdbTransPlace set PlaceState=1,PlaceDescribe='已啟用' where Tag= '" + dataGridView1["Tag", e.RowIndex].Value + "'";

                    using (SqlConnection con = new SqlConnection(connstr))
                    {
                        if (con.State == ConnectionState.Closed)
                        {
                            con.Open();
                        }
                        SqlCommand cmd = new SqlCommand(setSql, con);


                        try
                        {
                            int count = cmd.ExecuteNonQuery();
                            MessageBox.Show("保存成功");
                        }
                        catch (Exception)
                        {
                            throw;
                        }
                    }

 

關於表格線的問題,可以修改DataGridView的屬性:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM