使用BindingNavigator和BindingSource保存数据时出现问题 [英] Problems saving data using BindingNavigator and BindingSource
问题描述
大家好,
有人可以重新检查我的逻辑吗?
我正在尝试将Customers表单中的数据写入dbo。 SFDC_SQL_MDI数据库中的tblCustomers表无法正常工作。
在frmCustomer_Load事件中,我填充了Customers和Countries数据表。将表的列绑定到Customers表单上的适当控件。最后,我将组合框设置为没有选择
。
Private Sub frmCustomers_Load(sender As Object, _
e As EventArgs) _
Handles Me.Load
dtCustomers = objSQL.dt_MSSQL_Retrive_Data(strSQLCnn, "tblCustomers")
dtCountries = objSQL.dt_MSSQL_Retrive_Data(strSQLCnn, "tblCountries")
Call bs_Customers(dtCustomers, dtCountries)
'Set the ComboBoxes.SelectedIndex to -1
'No Selection made
Country.SelectedIndex = -1
State.SelectedIndex = -1
End Sub
控件绑定例程是:
Private Sub bs_Customers(ByVal dtCustomers As DataTable, _
ByVal dtCountries As DataTable)
'Purpose: Binds the Form to the appropriate text
' or combo boxes on the frmCustomers form
'Parameters: dtCountries As DataTable - tblCountries in Database
' dtCustomers As DataTable - tblCustomers in Database
' dtStates As DataTable - tblStates in Database
'Returns: Nothing - Information is bound to the form
'Set BindingSources
'Me.bsCountries = New BindingSource
'Me.bsCountries.DataSource = dtCountries
Me.bsCustomers = New BindingSource
Me.bsCustomers.DataSource = dtCustomers
'Me.bsCity = New BindingSource
'Me.bsCity.DataSource = dtCity
'Have the controls been data bound?
If Customer.DataBindings.Count > 0 Then
Exit Sub
Else
'Binding the controls to the appropate DataColumn(Field)
'Deactivated because the User does not need to see it
'txtCustID.DataBindings.Add() _
' ("Text", Me.bsCustomers, "CustID")
Customer.DataBindings.Add _
("Text", Me.bsCustomers, "CustName", True)
Identifier.DataBindings.Add _
("Text", Me.bsCustomers, "Identifier", True)
Address1.DataBindings.Add _
("Text", Me.bsCustomers, "Address_1", True)
Address2.DataBindings.Add _
("Text", Me.bsCustomers, "Address_2", True)
Country.DataBindings.Add("SelectedValue", _
Me.bsCustomers, _
"CountryID", True)
'Sets specific properties for the ComboBox
Country.ValueMember = "CountryID"
Country.DisplayMember = "Country"
Country.DataSource = dtCountries
State.DataBindings.Add("SelectedValue", Me.bsCustomers, "StateID", True)
txtZip.DataBindings.Add _
("Text", Me.bsCustomers, "Zip", True)
navCustomers.BindingSource = Me.bsCustomers
End If
End Sub
要"保存"的代码Customers表单中的信息是:
Private Sub SaveToolStripButton_Click(sender As Object, _
e As EventArgs) _
Handles SaveToolStripButton.Click
'Purpose: Save changes into the Customers Table
'Local Variables: daSQL As SqlDataAdapter
' cbSQL As SqlCommandBuilder
' strSQL As String
'Returns: Nothing - Table is updated inside the subroutine
Dim daSQL As SqlDataAdapter
Dim cbSQL As SqlCommandBuilder
Dim strSQL As String
'End edits to Navigator control
navCustomers.BindingSource.EndEdit()
Using cnn As New SqlConnection(strSQLCnn)
Try
If cnn.State = ConnectionState.Open Then
cnn.Close()
Else
cnn.Open()
strSQL = "SELECT * FROM dbo.tblCustomers;"
daSQL = New SqlDataAdapter(strSQL, cnn)
'Build Commands for add, delete, and update
cbSQL = New SqlCommandBuilder(daSQL)
'Update the Customer table
daSQL.Update(bsCustomers.DataSource)
Msg = "The dbo.tblCustomers table from the SFDC_SQL_MDI " & _
"database has been successfully updated."
MessageBox.Show(Msg)
End If
Catch ex As Exception
'Log error
Dim el As New Log.ErrorLogger
el.WriteToErrorLog(ex.Message, ex.StackTrace, "Error")
End Try
End Using
End Sub
我想我在SaveToolStripButton_Click事件中没有正确使用。当我逐步完成事件时,我激活了DataSet Visualizer
daSQL.Update(bsCustomers.DataSource)
它显示一个空表。
I think I am not using something properly in the SaveToolStripButton_Click event. When I step through the event I activated I the DataSet Visualizer at daSQL.Update(bsCustomers.DataSource) It shows an empty table.
< span style ="background:white; margin:0px">
MRM256
推荐答案
看起来你正在制作它远比它应该复杂得多。
It looks like you are making it far more sophisticated than it should be.
您的问题,也许是您在更新之前没有在绑定源上调用.EndEdit的事实,或者至少我没有看到您的调用代码任何地方
Your problem, maybe the fact you are not calling .EndEdit on the bindingsource prior to the update, or at least I dont see the call in your code anyplace
这篇关于使用BindingNavigator和BindingSource保存数据时出现问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!