1、 兩個屬性設置:
第一個:設置自動創建列,默認為True
DataGridView1. AutoGenerateColumns = True;
雖然默認為True,但寫下去總是好的!!!
第二個:鼠標單擊編輯,默認雙擊
DataGridView1.EditMode = DataGridViewEditMode.EditOnEnter;
2、 防止單元格被編輯:
DataGridViewCell:限制單元格
DataGridViewColumn:限制列
DataGridViewRow:限制行
DataGridViewReadOnly:限制整個DataGridView控件
關鍵代碼如下:
dataGridView1.ReadOnly = true;//整個表格只讀 dataGridView1.Columns[1].ReadOnly = true;//列只讀 dataGridView1.Rows[0].ReadOnly = true;//行只讀 dataGridView1[3,3].ReadOnly = true;//單元格只讀
獲取數據
string strcolumn = dataGridView1.Columns[e.ColumnIndex].HeaderText;//獲取列標題 string strrow = dataGridView1.Rows[e.RowIndex].Cells[0].Value.ToString();//獲取焦點觸發行的第一個值 string value = dataGridView1.CurrentCell.Value.ToString();//獲取當前點擊的活動單元格的值
還有一種限制編輯的方式,EditMode枚舉下的EditProgrammatically的屬性:
dataGridView1.EditMode = DataGridViewEditMode.EditProgrammatically; //僅在調用 System.Windows.Forms.DataGridView.BeginEdit(System.Boolean) 方法時開始編輯
此屬性需要調用一個CellBeginEdit事件,編輯條件寫在方法中。
private void dataGridView1_CellBeginEdit(object sender, DataGridViewCellCancelEventArgs e) { // dataGridView1.EditMode = DataGridViewEditMode.EditProgrammatically; //在點擊單元格時,觸發此事件,進行有條件的編輯 }
3、可通過CellValueChanged事件來實現更新數據庫的數據數據鏈接
private SqlConnection connection() { string strconn = "server = XQ-20160210KQLE\\SA;uid = sa;pwd = 123456;database = JYXinXi"; SqlConnection conn = new SqlConnection(strconn); return conn; }
DataGridView顯示數據
private void GetDataGridView() { try { string strda = "select * from FilTer"; SqlConnection conn = connection(); conn.Open(); DataSet ds = new DataSet(); SqlDataAdapter da = new SqlDataAdapter(strda, conn); da.Fill(ds, "顯示數據"); conn.Close(); dataGridView1.AutoGenerateColumns = true;//自動創建列 dataGridView1.EditMode = DataGridViewEditMode.EditOnEnter;//單擊單元格編輯 dataGridView1.DataSource = ds.Tables[0]; } catch (Exception ee) { MessageBox.Show(ee.Message.ToString()); } }
更新數據庫
private void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e) { SqlConnection conn = connection(); try { string strcolumn = dataGridView1.Columns[e.ColumnIndex].HeaderText;//獲取列標題 string strrow = dataGridView1.Rows[e.RowIndex].Cells[0].Value.ToString();//獲取焦點觸發行的第一個值 string value = dataGridView1.CurrentCell.Value.ToString();//獲取當前點擊的活動單元格的值 string strcomm = "update FilTer set " + strcolumn + "='" + value + "'where id = " + strrow; //update FilTer set 列名 = value where id = 3 conn.Open(); SqlCommand comm = new SqlCommand(strcomm, conn); comm.ExecuteNonQuery(); } catch (Exception ee) { MessageBox.Show(ee.Message.ToString()); } finally { conn.Close(); } }