根据DisplayMember设置要显示的项目和项目

时间:2018-03-23 10:11:26

标签: vb.net combobox

我按以下方式设置了一个组合框:

<form onsubmit="return validatePass();">
  <p>Please enter your password and press Enter:</p>
  <input id='password' type='password' />
  <p><a href="#" onclick="return false;" class="disabled-link">Register now</a></p>
</form>

我想使用&#34; employee&#34;在组合框中设置所选项目。显示成员。我需要为函数的下一部分引用ValueMember,因此我不能只显示正确的文本,我需要选择正确的项目。

我尝试了各种方法,包括:

With Me.cboEmps
        .DataSource = myDSemp.Tables(0) 'results of an SQL statement
        .DisplayMember = "employee" 'employee name
        .ValueMember = "employee_id"
End With

但索引总是以-1返回。

index = cboEmps.Items.IndexOf(name)
cboEmps.SelectedIndex = index

当我触发事件时,最终会出现一个组合框,显示一个接一个地添加的名称。

我想尝试避免做一些及时的循环,它遍历组合框中的每个项目,比较显示成员等。

亲切的问候

马特

2 个答案:

答案 0 :(得分:0)

您使用原始数据源搜索您的员工姓名,一旦获得该员工姓名,就可以轻松获取其员工ID并设置SelectedValue属性

Dim name = "EmpName"
Dim rows = myDSemp.Tables(0).Select("employee='" & name & "'")
If rows.Count > 0 Then
   cboEmps.SelectedValue = Convert.ToInt32(rows(0)("employee_id"))
End If

答案 1 :(得分:0)

如果您使用

cboEmps.Text = name

它应该(假设DropDownStyle = DropDownList)正确设置SelectedItem

您也可以通过访问组合框数据源来做类似史蒂夫的回答:

Dim tmpCboEmps As DataTable = cboEmps.DataSource

' find employee by name from clicked item
' set cboEmps.SelectedItem = employee