问题描述
我在form上放了一个DataGirdView和一个Button,点击Button后会从数据库里读取数据绑到DataGirdView里,DataGirdView在设计时勾选了“启用添加”“启用删除”“启用编辑”,但是修改后的数据怎么保存回数据库啊?我以前写过VB6.0的程序,给表格绑定了记录集后,在表格上的添加、删除,修改等操作都自动保存的数据库里了,我都不用写代码。C#中怎么做啊?
解决方案
解决方案二:
要加一个button事件,把要做的处理放在那里
解决方案三:
首先,不要用那自带的编辑删除修改,那个东西(我本人)使用起来感觉很不方便。在gridview添加三个按钮列,添,删,改。然后使用gv的CellClick事件,在方法里,判断e.ColumnIndex是哪个列号,根据列号判断是进行添、删、改的哪个操作,然后获取行的信息,再进行操作就可以了。哦,对了,感觉添加应该是放在gv外的。
解决方案四:
可以啊在外面再加一个button保存按钮,定义一个全局的datatable查询出来的数据放在datatable里面,然后对dataGridView进行增删改操作的时候就对这个datatable进行增删改,然后OracleDataAdapteroda=newOracleDataAdapter(com);//com的sql语句跟绑定数据用的查询语句一样oda.Fill(dt22);OracleCommandBuilderocb=newOracleCommandBuilder(oda);inti=oda.Update(这里放操作后的datatable);if(i>0){isSuccess=true;}else{isSuccess=false;}然后datatable.acceptchange();可以实现批量操作了
解决方案五:
http://blog.csdn.net/huwei2003/article/details/17996157
解决方案六:
用sql语句:updata,select,delete
解决方案七:
我基本照抄了4楼发的地址中的例子(去掉了删除行的处理),但是报错“如果分配给命令的连接位于本地挂起事务中,ExecuteReader要求拥有事务,命令的Transaction属性尚未初始化”。以下是所有代码,帮忙看下哪儿有问题啊??namespacetest1{publicpartialclassForm1:Form{OleDbConnectionconn;OleDbDataAdapterda;OleDbTransactiontrans;publicForm1(){InitializeComponent();}privatevoidForm1_Load(objectsender,EventArgse){}privateDataTabledbconn(Stringsqlstr){Stringconnstr="Provider=Microsoft.ACE.OLEDB.12.0;DataSource=test1.accdb";conn=newOleDbConnection(connstr);conn.Open();da=newOleDbDataAdapter(sqlstr,conn);DataTabledt=newDataTable();da.Fill(dt);conn.Close();returndt;}privatevoidbutton1_Click(objectsender,EventArgse){Stringsqlstr="select*fromt1orderbyiddesc";dataGridView1.DataSource=dbconn(sqlstr);}privatevoidbutton2_Click(objectsender,EventArgse){Stringsqlstr="select*fromt1";DataTabledtu=newDataTable();dtu=dbconn(sqlstr);dtu.Rows.Clear();DataTabledts=newDataTable();dts=(DataTable)dataGridView1.DataSource;for(inti=0;i<dts.Rows.Count;i++){dtu.ImportRow(dts.Rows[i]);}try{conn.Open();trans=conn.BeginTransaction();OleDbCommandBuildercb=newOleDbCommandBuilder(da);da.Update(dtu);trans.Commit();conn.Close();dtu.AcceptChanges();}catch(Exceptionex){MessageBox.Show(ex.Message.ToString());trans.Rollback();}}}}