DataGridView修改数据并传到数据库

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();
            }
        }
原文地址:https://www.cnblogs.com/liuqifeng/p/9149694.html