datagrid中如何批量修改数据? 假如绑定objDataSet.AcceptChanges(); 保存objDataSet.RejectChanges(); 放弃 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你可以在SQL Server语句中实现你想要的这个功能 利用SqlDataAdapter提供的update功能,如:SqlDataAdapter da=new SqlDataAdapter(selectcmd,con);SqlCommandBuilder cb=new SqlCommandBuilder(da);da.Update(dt); //参照我下面的代码,可以批量更新,“放弃”功能没写过,不过通过重新绑定一次数据应该可以实现。数据适配器和数据集的定义以及dataGrid的数据绑定:OleDbConnection conn;DataSet ds;OleDbDataAdapter da;string Src="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Invoice.mdb"; string Invoice="SELECT 购货单位,日期,货名及规格,单位,数量,单价,金额,已报销,图片名称,备注,编号 FROM invoice"; conn=new OleDbConnection(Src); da=new OleDbDataAdapter(Invoice,conn); ds=new DataSet(); da.Fill(ds,"invoice"); dataGridInvoice.SetDataBinding(ds,"invoice");//特别要注意下面代码中的注释,已经调试通过private void UpdateInvoice() { string Upt="UPDATE invoice SET 购货单位=@购货单位,日期=@日期,货名及规格=@货名及规格,单位=@单位,数量=@数量,单价=@单价,金额=@金额,已报销=@已报销,图片名称=@图片名称,备注=@备注 WHERE 编号=@编号"; da.UpdateCommand=new OleDbCommand(Upt,conn); OleDbParameter Para; //下面这些参数添加的先后顺序一定要和SQL语句中的顺序一致,其中WHERE子句中的参数位于最后,也就是要严格一致才行! Para=da.UpdateCommand.Parameters.Add("@购货单位",OleDbType.Char); Para.SourceColumn="购货单位"; Para.SourceVersion=DataRowVersion.Current; Para=da.UpdateCommand.Parameters.Add("@日期",OleDbType.Char); Para.SourceColumn="日期"; Para.SourceVersion=DataRowVersion.Current; Para=da.UpdateCommand.Parameters.Add("@货名及规格",OleDbType.Char); Para.SourceColumn="货名及规格"; Para.SourceVersion=DataRowVersion.Current; Para=da.UpdateCommand.Parameters.Add("@单位",OleDbType.Char); Para.SourceColumn="单位"; Para.SourceVersion=DataRowVersion.Current; Para=da.UpdateCommand.Parameters.Add("@数量",OleDbType.Char); Para.SourceColumn="数量"; Para.SourceVersion=DataRowVersion.Original; Para=da.UpdateCommand.Parameters.Add("@单价",OleDbType.Char); Para.SourceColumn="单价"; Para.SourceVersion=DataRowVersion.Original; Para=da.UpdateCommand.Parameters.Add("@金额",OleDbType.Char); Para.SourceColumn="金额"; Para.SourceVersion=DataRowVersion.Original; Para=da.UpdateCommand.Parameters.Add("@已报销",OleDbType.Char); Para.SourceColumn="已报销"; Para.SourceVersion=DataRowVersion.Current; Para=da.UpdateCommand.Parameters.Add("@图片名称",OleDbType.Char); Para.SourceColumn="图片名称"; Para.SourceVersion=DataRowVersion.Current; Para=da.UpdateCommand.Parameters.Add("@备注",OleDbType.Char); Para.SourceColumn="备注"; Para.SourceVersion=DataRowVersion.Current; Para=da.UpdateCommand.Parameters.Add("@编号",OleDbType.BigInt); Para.SourceColumn="编号"; Para.SourceVersion=DataRowVersion.Original; if(MessageBox.Show("你真的要保存对数据库所做的更改吗?","确认!",MessageBoxButtons.OKCancel,MessageBoxIcon.Question)==DialogResult.OK) { da.Update(ds,"invoice"); dataGridInvoice.SetDataBinding(ds,"invoice"); } }//一定要有WHERE字句,还有就是WHERE字句中的字段在后面的Para=da.UpdateCommand.Parameters.Add()的时候也要放在所有字段的最后,否则即便更新成功结果也不对。 获取指定 MethodInfo 的 MSIL 或者 C# 源码? 如何获取文本框里面的值? 怎么用递归实现目录啊 在与SQL server建立连接时出现与网络相关的或特定于实例的错误,未找到或无法访问服务器。 一个比较简单的问题,图片长度 请问怎么,合并EXCEL的单元格 各位大侠帮我看一下这条查询最大单据编号的语句有什么错误 关于guid,急!!! DateGrid怎样连接数据库(请详细一点)菜鸟 请教一下:这种情况下,需要new 吗? 一个初学者的问题 如何使TEXTBOX中的html标签高亮显示?像frontpage编辑器一样?
SqlDataAdapter da=new SqlDataAdapter(selectcmd,con);
SqlCommandBuilder cb=new SqlCommandBuilder(da);
da.Update(dt);
数据适配器和数据集的定义以及dataGrid的数据绑定:
OleDbConnection conn;
DataSet ds;
OleDbDataAdapter da;
string Src="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Invoice.mdb";
string Invoice="SELECT 购货单位,日期,货名及规格,单位,数量,单价,金额,已报销,图片名称,备注,编号 FROM invoice";
conn=new OleDbConnection(Src);
da=new OleDbDataAdapter(Invoice,conn);
ds=new DataSet();
da.Fill(ds,"invoice");
dataGridInvoice.SetDataBinding(ds,"invoice");//特别要注意下面代码中的注释,已经调试通过
private void UpdateInvoice()
{
string Upt="UPDATE invoice SET 购货单位=@购货单位,日期=@日期,货名及规格=@货名及规格,单位=@单位,数量=@数量,单价=@单价,金额=@金额,已报销=@已报销,图片名称=@图片名称,备注=@备注 WHERE 编号=@编号";
da.UpdateCommand=new OleDbCommand(Upt,conn);
OleDbParameter Para;
//下面这些参数添加的先后顺序一定要和SQL语句中的顺序一致,其中WHERE子句中的参数位于最后,也就是要严格一致才行!
Para=da.UpdateCommand.Parameters.Add("@购货单位",OleDbType.Char);
Para.SourceColumn="购货单位";
Para.SourceVersion=DataRowVersion.Current;
Para=da.UpdateCommand.Parameters.Add("@日期",OleDbType.Char);
Para.SourceColumn="日期";
Para.SourceVersion=DataRowVersion.Current;
Para=da.UpdateCommand.Parameters.Add("@货名及规格",OleDbType.Char);
Para.SourceColumn="货名及规格";
Para.SourceVersion=DataRowVersion.Current;
Para=da.UpdateCommand.Parameters.Add("@单位",OleDbType.Char);
Para.SourceColumn="单位";
Para.SourceVersion=DataRowVersion.Current;
Para=da.UpdateCommand.Parameters.Add("@数量",OleDbType.Char);
Para.SourceColumn="数量";
Para.SourceVersion=DataRowVersion.Original;
Para=da.UpdateCommand.Parameters.Add("@单价",OleDbType.Char);
Para.SourceColumn="单价";
Para.SourceVersion=DataRowVersion.Original;
Para=da.UpdateCommand.Parameters.Add("@金额",OleDbType.Char);
Para.SourceColumn="金额";
Para.SourceVersion=DataRowVersion.Original;
Para=da.UpdateCommand.Parameters.Add("@已报销",OleDbType.Char);
Para.SourceColumn="已报销";
Para.SourceVersion=DataRowVersion.Current;
Para=da.UpdateCommand.Parameters.Add("@图片名称",OleDbType.Char);
Para.SourceColumn="图片名称";
Para.SourceVersion=DataRowVersion.Current;
Para=da.UpdateCommand.Parameters.Add("@备注",OleDbType.Char);
Para.SourceColumn="备注";
Para.SourceVersion=DataRowVersion.Current;
Para=da.UpdateCommand.Parameters.Add("@编号",OleDbType.BigInt);
Para.SourceColumn="编号";
Para.SourceVersion=DataRowVersion.Original;
if(MessageBox.Show("你真的要保存对数据库所做的更改吗?","确认!",MessageBoxButtons.OKCancel,MessageBoxIcon.Question)==DialogResult.OK)
{
da.Update(ds,"invoice");
dataGridInvoice.SetDataBinding(ds,"invoice");
}
}//一定要有WHERE字句,还有就是WHERE字句中的字段在后面的Para=da.UpdateCommand.Parameters.Add()的时候也要放在所有字段的最后,否则即便更新成功结果也不对。