我想在 DataGridViewCell 上输完值就点工具栏上的保存,并更新到数据库,应该怎么做public class DataBaseAction
{
private SqlDataAdapter mobjAdapter;
private SqlCommandBuilder mobjCmdBuilder;
private DataTable mobjDatatable; public DataTable AdapterQuery(string sqlstring)
{
mobjDatatable = new DataTable();
mobjAdapter = new SqlDataAdapter(sqlstring, mstrConn); mobjAdapter.Fill(mobjDatatable);
return mobjDatatable;
} public void UpdateDataBase()
{
if (mobjDatatable != null)
{
mobjCmdBuilder = new SqlCommandBuilder(mobjAdapter);
mobjAdapter.Update(mobjDatatable);
}
}
}Form 上
DataBaseAction db;
BindingSource bs;private void Form1_Load(object sender, EventArgs e)
{
db = new DataBaseAction(@"Data Source=127.0.0.1;Initial Catalog=myc;Integrated Security=True"); bs = new BindingSource();
this.SetData();
}private void SetData()
{
bs.DataSource = db.AdapterQuery("select * from customs");
dataGridView1.DataSource = bs;
bindingNavigator1.BindingSource = bs;
}private void 保存SToolStripButton_Click(object sender, EventArgs e)
{
dataGridView1.EndEdit();
db.UpdateDataBase();
this.SetData();
}
{
private SqlDataAdapter mobjAdapter;
private SqlCommandBuilder mobjCmdBuilder;
private DataTable mobjDatatable; public DataTable AdapterQuery(string sqlstring)
{
mobjDatatable = new DataTable();
mobjAdapter = new SqlDataAdapter(sqlstring, mstrConn); mobjAdapter.Fill(mobjDatatable);
return mobjDatatable;
} public void UpdateDataBase()
{
if (mobjDatatable != null)
{
mobjCmdBuilder = new SqlCommandBuilder(mobjAdapter);
mobjAdapter.Update(mobjDatatable);
}
}
}Form 上
DataBaseAction db;
BindingSource bs;private void Form1_Load(object sender, EventArgs e)
{
db = new DataBaseAction(@"Data Source=127.0.0.1;Initial Catalog=myc;Integrated Security=True"); bs = new BindingSource();
this.SetData();
}private void SetData()
{
bs.DataSource = db.AdapterQuery("select * from customs");
dataGridView1.DataSource = bs;
bindingNavigator1.BindingSource = bs;
}private void 保存SToolStripButton_Click(object sender, EventArgs e)
{
dataGridView1.EndEdit();
db.UpdateDataBase();
this.SetData();
}
在你保存之前,更新当前行,并提交
public void UpdateDataBase()
{
if (mobjDatatable != null)
{
mobjCmdBuilder = new SqlCommandBuilder(mobjAdapter);
mobjAdapter.Update(mobjDatatable);
}
}
Update()方法中放入的应该有两个参数,一个是你的要更改的表名,还有一个就是你的 SqlDataAdapter 对象名了,改成这样吧!
public void UpdateDataBase()
{
if (mobjDatatable != null)
{
mobjCmdBuilder = new SqlCommandBuilder(mobjAdapter);
mobjAdapter.Update( mobjDatatable,mobjDatatable);
}
}
this.dataGridView.currentCell=null;
取消datagridview行的编辑状态哈哈,有点不太好接受啊
private void 保存SToolStripButton_Click(object sender, EventArgs e)
{
//dataGridView1.EndEdit();
this.Validate();//这个很重要
db.UpdateDataBase();
//this.SetData();
}
mobjAdapter.Update( mobjDatatable,mobjDatatable);
mobjAdapter.AcceptChanges();//
toolStrip上添加的button按钮update时要添加this.Validate();using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;namespace WindowsApplication3
{
public partial class Form1 : Form
{
SqlConnection con;
SqlDataAdapter da;
DataTable dt;
public Form1()
{
InitializeComponent();
con = new SqlConnection("Server=.;Integrated Security=True;Database=Northwind");
dt = new DataTable();
} private void Form1_Load(object sender, EventArgs e)
{
da = new SqlDataAdapter();
da.SelectCommand = new SqlCommand("select * from Employees", con);
SqlCommandBuilder scb = new SqlCommandBuilder(da);
da.Fill(dt);
this.bindingSource1.DataSource = dt;
this.dataGridView1.DataSource = bindingSource1;
} private void toolStripBtnSave_Click(object sender, EventArgs e)
{
//更新
if (dt == null)
{
MessageBox.Show("dt为null");
return;
}
this.Validate();//这个很重要..没有更新不了.
da.Update(dt);
dt.AcceptChanges();
}
}
}