我有两种形式,A和B.
在FORM A
用户将从combobox
中选择国家/地区代码,然后将其保存到数据库。
在FORM B
上,textbox
显示之前保存到数据库的国家/地区代码。
我想在选择FORM B
时更改edit
中的国家/地区代码。
如何更改: 1.首先隐藏文本框 2.将显示一个包含所有国家/地区代码的组合框,其中选定的值等于隐藏的文本框值。
我已经尝试将信息直接从数据库中放入组合框中,就像文本框一样空白,例如:
cbCountryCode.Text = CStr(dataTable.Rows(0).Item(2))
但这不起作用。我还需要将国家/地区代码保存在组合框中,因为如果错误,用户需要更改国家/地区代码。有办法做到这一点吗?我有一个解决方法,如果组合框是空白的,我不会让用户更新信息,但我希望国家代码已经存在,这样如果没有错误,用户就不必再次选择国家代码。任何有关此问题的帮助将不胜感激。
编辑:
datatable.Rows(0).Item(2)
拥有国家/地区代码,例如Ireland (+353), United Kingdom (+44) or U.S.A. (1)
。
这是我从数据库中调用信息的代码:
sqlVisitorDetails = "SELECT * FROM visitorDetails WHERE idNumber=@idNumber"
sqlCon.Open()
sqlCmd = New SqlCommand(sqlVisitorDetails, sqlCon)
sqlCmd.Parameters.AddWithValue("@idNumber", txtIdNumber.Text)
dtVisitorDetails = loadDtVisitorDetails()
txtFirstName.Text = CStr(dtVisitorDetails.Rows(0).Item(1))
txtLastName.Text = CStr(dtVisitorDetails.Rows(0).Item(2))
txtContactNumber.Text = CStr(dtVisitorDetails.Rows(0).Item(3))
txtCountryCode.Text = CStr(dtVisitorDetails.Rows(0).Item(4))
txtAddress.Text = CStr(dtVisitorDetails.Rows(0).Item(5))
国家代码(例如'Ireland(+353)')存储在dtVisitorDetails.Rows(0).Item(4)中,并将其放入文本框txtCountryCode中。 当在表单上单击编辑时,文本框txtCountryCode被隐藏,组合框cbCountryCode可见(在单击编辑之前显示txtCountryCode并隐藏cbCountryCode)。然后我想要国家代码(在这种情况下'爱尔兰(+353)')显示在cbCountryCode组合框中。在显示组合框时,它是空白的,用户必须再次选择国家代码,即使它是正确的。我希望这会使事情更加清晰。
答案 0 :(得分:0)
试试这个;
cbCountryCode.SelectedItem = CStr(dataTable.Rows(0).Item(2))
.Text
属性是组合中当前选定的文本,而不是当前选定的项目。
编辑:(第3版!)
这绝对有效!创建一个新项目,使用新的WinForms项目和Form1等。添加一个按钮(btnTest)和一个组合框(cboTest)并粘贴此代码;
Private Sub Form1_Load() Handles MyBase.Load
' Add some items
cboTest.Items.Add("U.S.A (+1)")
cboTest.Items.Add("Ireland (+353)")
cboTest.Items.Add("U.K. (+44)")
' Select the first item
cboTest.SelectedIndex = 0
End Sub
Private Sub btnTest_Click() Handles btnTest.Click
' Select the UK entry
cboTest.SelectedIndex = cboTest.FindString("U.K.")
End Sub
我讨厌不得不说出来,但它就像一个魅力!我已将组合框设置为DropDown
AND DropDownList
进行测试,结果相同。请检查您正在使用的dataTable / Row / Item中是否有正确的数据进入和退出您的例程!!
答案 1 :(得分:0)
那怎么样?
cbCountryCode.ClearSelection()
cbCountryCode.SelectedIndex = cbCountryCode.Items.IndexOf(cbCountryCode.Items.FindByText(datatable.Rows(0).Item(2).ToString))
答案 2 :(得分:0)
从我能从你的问题中理解的最好的。
cbCountryCode.Text = CStr(dataTable.Rows(0).Item(2))
如果属性中的DropDownStyle
设置为DropDownList
,将无效,请将其更改为DropDown
(如果不是)。
对此:
I also need to keep the country codes in the combobox as the user will need to change the country code if it's wrong.
您必须将数据绑定到ComboBox才能使其正常工作。
编辑:
如果可能,请使用ColumnName
代替Index
从数据表中获取数据。由于您从数据库中选择了所有记录,因此您可能不知道索引何时会更改(当从DB添加或删除列时)
cbCountryCode.Text = CStr(dataTable.Rows(0).Item("CountryCodeColumn"))
答案 3 :(得分:-1)
尝试简单:
comboBox.Items.Add("Item 1");