问一个用textbox给datagridview的cell赋值后更新数据库的有关问题

问一个用textbox给datagridview的cell赋值后更新数据库的问题
我把一个sqldataadapter   绑定到一个datagridview之后,用textbox上的值对某个单无格赋值datagridview.item(1,1).value=textbox1.text,赋值成功,但调用sqldataadapter.update(datatable),却无法更新数据库,也不报错。非得要在DATAGRIDVIEW上点下别的单无格后再更新才能成功,不知为什么,谢谢。

------解决方案--------------------
因为sqldataadapter.update的事件顺序决定的。
比如,你在单元格里无论怎么改,它都不会更新,因为你没有最终确定。如果你点击其他单元格了,就相当于你确定所做的修改,这时,sqldataadapter.update才会执行。
------解决方案--------------------
点一下别的单元格是让焦点转移后,gridview才提交数据。否则焦点在你想更改的单元格里,你update的数据还是table中美修改之前的数据,当然没反应了。如果是行更改或者在textbox上更改值,然后再gridview上显示更新后的内容,可以调用gridview的RowColChang事件。然后再自己写一个textbox.text=talel.row(0).iteam( " ")之类的sub 在上面事件中调用。
------解决方案--------------------
如果你使用了BindingSource的情况下,可以参考下面代码:
Me.Validate()
Me.单项维护BindingSource.EndEdit()
Me.单项维护TableAdapter.Update(Me.工资管理DataSet.单项维护.GetChanges)
Me.工资管理DataSet.单项维护.AcceptChanges()
------------------------------------------
例程来源:人民邮电出版社出版的书《Visual Basic .NET 2005数据库编程技术与实例》
人民邮电出版社出版:http://www.ptpress.com.cn/books/Book_Information.asp?BID=16271
中国互动出版网:http://www.china-pub.com/computers/common/info.asp?id=35208
------------------------------------------
------------------------------------------
------解决方案--------------------
你代码没有写对.可能没有给dataAdapter指定要更新的表!给你一个简单的例子:
Dim cnQTGL As New SqlConnection( "server=localhost;database=QTGL; " _
& "integrated security=true ")
'创建两个DataAdapter对象
Dim daCustomer As New SqlDataAdapter( "select * from 旅客 ", cnQTGL)
Dim daStayrecord As New SqlDataAdapter( "select * from 入住记录 ", cnQTGL)
'创建DataSet对象dsQTGL
Dim dsQTGL As New DataSet()

Private Sub btnFill_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnFill.Click
daCustomer.Fill(dsQTGL, "旅客 ")
daStayrecord.Fill(dsQTGL, "入住记录 ")
'DataGrid控件显示
dgrd.DataSource = dsQTGL.Tables( "旅客 ")
End Sub

Private Sub btnUpdate_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnUpdate.Click
'创建两个CommandBuilder分别用于两个DataAdapter对象更新,
Dim cmb1 As New SqlCommandBuilder(daCustomer)
Dim cmb2 As New SqlCommandBuilder(daStayrecord)
daStayrecord.Update(dsQTGL.Tables( "入住记录 "))
daCustomer.Update(dsQTGL.Tables( "旅客 "))
End Sub