这是我在这里的第一篇文章,请原谅我,如果我违反规则并需要稍后澄清一些事情。我的问题是我使用的是Visual Basic 2008,并且有一个窗体,其中有几个文本框绑定到数据视图。我能够很好地编辑数据,并且数据被提交到SQL 2005 express数据库。此外,只要我不退出程序,我就可以添加一条记录。一旦我编辑新记录就丢失了。所以,基本上,编辑正在进行,但增加不是。这是我正在使用的代码。感谢您的时间和考虑。
Private Sub frmMain_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.Cursor = Cursors.WaitCursor
Try
cn = New SqlConnection(sConnString)
cn.Open()
' Open the Master table
da = New SqlDataAdapter("SELECT * FROM CAMaster;", cn)
ds = New DataSet
da.Fill(ds, "Master")
dv = New DataView(ds.Tables("Master"))
cm = CType(Me.BindingContext(dv), CurrencyManager)
dv.AllowNew = True
dv.AllowEdit = True
dv.AllowDelete = True
' Bind the form Textboxes to the Master table dataview and assign formatting
Dim ctl As Control
For Each ctl In Controls
If TypeOf ctl Is TextBox Then
If ctl.Tag <> "" Then
Select Case ctl.Tag
Case "Date"
ctl.DataBindings.Add("Text", dv, ctl.Tag, True, DataSourceUpdateMode.OnValidation, False, "MM/dd/yyyy")
Case Else
ctl.DataBindings.Add("Text", dv, ctl.Tag, True, DataSourceUpdateMode.OnValidation, False, "C2")
End Select
End If
End If
Next
Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Exclamation, "Form Load Error")
End
End Try
Me.Cursor = Cursors.Default
End Sub
Private Sub cmdAdd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdAdd.Click
Try
dv.RowFilter = ""
dv.AddNew()
Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Information, "Add Error")
End Try
End Sub
Private Sub cmdOk_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdOk.Click
Me.Cursor = Cursors.WaitCursor
Dim i As Integer
Try
Me.Validate()
cm.EndCurrentEdit()
cb = New SqlCommandBuilder(da)
da.Update(ds, "Master")
ds.Tables("Master").AcceptChanges()
Catch ex As Exception
MsgBox(ex.Message)
End Try
SetButtons(True)
If mbAddNewFlag Then
Me.cmbDate.SelectedItem = Me.txtDate.Text
End If
Me.Cursor = Cursors.Default
End Sub
答案 0 :(得分:0)
我终于找到了导致我问题的原因。我在容器中有Date文本框。要访问容器内的文本框,您必须以不同方式引用它。所以它永远不会被数据绑定到文本框。为了解决我的问题,我移动了容器的文本框,并且原始帖子中的代码工作了。我不明白的是,当我尝试更新数据集时,我没有得到异常。但是,再说一遍,关于VB.net我有很多不明白的地方。