WINDOWS窗体中如何进行DataGrid的修改!!!越快越好!! 取您帮定的数据集dsDataSet dschange = ds.GetChanges();然后用适配器update(); 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 老大们不行啊!!!我是用Botton2来把修改的数据上传到数据库中,帮我把代码写全了,谢谢!!private void button2_Click(object sender, System.EventArgs e){} http://coder.ylqh.com/share/index.htm随便下载一个吧。然后自己研究。 这是我以前的一个发票数据更新程序,直接编辑datagrid单元格中的数据,然后点击“保存”按钮数据库就更新了,用的Access数据库,虽然数据库表字段名都是中文感觉傻傻的,但还是好用,绝对好用,你自己根据自己的不同数据库类型做适当修改吧,你在“保存”按钮的事件里面调用这个方法就可以了。看准了有DataRowVersion.Original和DataRowVersion.Current两种类型。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.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.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"); } } 其中da和ds都是全局变量,你自己看着怎么合适怎么来吧。 你这应该是在DataGrid中,添加了按钮键吧!!!那是对每一行进行修改!!但这只是对WEB窗体的了!!我要的是在WINDOWS窗体进行的修改的!!运行时可直接在DataGrid上进行修改!!而且我的绑定都是用代码和存贮过程来完成的,并不是在页面上拖入sqlDataAdapter,所以上传到数据库中的代码不知道怎么写了!!!帮帮忙了,各位高手们!! // private SqlTransaction trans; 这是全局变量DadaRow[] rows = 根据RowStatus获取修改过的纪录, 一时忘记详细的代码,现在的机子没装.Netforeach(DataRow row in rows){SqlCommand cmd=new SqlCommand(); cmd.Connection=this.conn ;if(inTransaction) cmd.Transaction=trans; cmd.CommandText="UPDATE table SET field1=@field1 ... WHERE ...";cmd.Parameters.Add("@field1 ",row["field1"]);...cmd.ExecuteNonQuery();} 我的代码本来就是在Windows窗体中进行修改的代码,你用存储过程也一样啊,只不过是调用方式变一下,你照样可以添加参数啊,还有那个sqlDataAdapter,你怎么就知道我是拖入进去的?我就是用代码直接实例化的啊,我只是给了你一些关键代码而已。 http://blog.csdn.net/zhzuo/archive/2004/08/06/67037.aspx 第一次在CSDN上发贴!!谢谢大家的帮忙!! 【WEB】使用函数参数 web service 本地都访问不了 托盘菜单 非常奇怪的问题,""与""有区别么? DataSet 系列化 问题 求例:用c#更新,插入access C#程序如何读取PDF的内容,并写回数据库 请问这个应该怎么做? OracleDataAdapter,参数中sql为中文的话,查询结果为空 vs2005 调试:源文件与模块生成时的文件不同。仍要让调试器使用它 困扰我3天的问题,超奇怪 求助!如何象另一个窗体发送字符串
我是用Botton2来把修改的数据上传到数据库中,帮我把代码写全了,谢谢!!
private void button2_Click(object sender, System.EventArgs e)
{}
随便下载一个吧。然后自己研究。
数据库就更新了,用的Access数据库,虽然数据库表字段名都是中文感觉傻傻的,但还是好用,绝对好用,你自己根据自己的不同数据库类型做适当修改吧,你在“保存”按钮的事件里面调用这个方法就可以了。看准了有DataRowVersion.Original和DataRowVersion.Current两种类型。
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.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.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");
}
}
帮帮忙了,各位高手们!!
DadaRow[] rows = 根据RowStatus获取修改过的纪录, 一时忘记详细的代码,现在的机子没装.Netforeach(DataRow row in rows)
{
SqlCommand cmd=new SqlCommand();
cmd.Connection=this.conn ;
if(inTransaction) cmd.Transaction=trans;
cmd.CommandText="UPDATE table SET field1=@field1 ... WHERE ...";
cmd.Parameters.Add("@field1 ",row["field1"]);
...
cmd.ExecuteNonQuery();
}