提交从Windows窗体添加的数据与文本框绑定到dataview?

时间:2013-01-08 15:36:06

标签: vb.net dataview

这是我在这里的第一篇文章,请原谅我,如果我违反规则并需要稍后澄清一些事情。我的问题是我使用的是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

1 个答案:

答案 0 :(得分:0)

我终于找到了导致我问题的原因。我在容器中有Date文本框。要访问容器内的文本框,您必须以不同方式引用它。所以它永远不会被数据绑定到文本框。为了解决我的问题,我移动了容器的文本框,并且原始帖子中的代码工作了。我不明白的是,当我尝试更新数据集时,我没有得到异常。但是,再说一遍,关于VB.net我有很多不明白的地方。