从SQL列填充ComboBox后,实现联动显示对应行至TextBox
实现ComboBox选中项联动显示对应行数据到TextBox
嘿,你已经搞定了ComboBox的数据绑定,接下来只需要添加上选中事件的处理逻辑,就能实现联动显示啦!
具体实现步骤:
- 给ComboBox添加
SelectedIndexChanged事件处理方法——你可以直接在设计器里双击ComboBox1,自动生成事件框架;也可以手动在代码里添加绑定。 - 在事件方法中,获取选中行的
DataRowView对象(因为绑定DataTable时,ComboBox的选中项本质是DataRowView类型),然后提取对应列的值赋值给目标TextBox。
修改后的完整代码:
Imports System.Data.SqlClient Public Class Form1 Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load Dim con As New SqlConnection("Data Source=xxxx;Initial Catalog=ltLeavers;Integrated Security=True") Dim da As New SqlDataAdapter("SELECT * FROM dbo.mytable", con) Dim dt As New DataTable da.Fill(dt) ComboBox1.DisplayMember = "DISPLAY_NAME" ComboBox1.DataSource = dt End Sub ' 新增ComboBox选中事件处理逻辑 Private Sub ComboBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox1.SelectedIndexChanged ' 先判断是否选中了有效项,避免空引用报错 If ComboBox1.SelectedItem IsNot Nothing Then ' 将选中项转换为DataRowView类型 Dim selectedRow As DataRowView = DirectCast(ComboBox1.SelectedItem, DataRowView) ' 给对应的TextBox赋值,记得替换成你实际的TextBox控件名 ' 加入DBNull判断,处理数据库列值为空的情况 TextBoxEmail.Text = If(IsDBNull(selectedRow("EMAIL_ADDRESS")), "", selectedRow("EMAIL_ADDRESS").ToString()) TextBoxDepartment.Text = If(IsDBNull(selectedRow("DEPARTMENT")), "", selectedRow("DEPARTMENT").ToString()) End If End Sub End Class
小提醒:
- 要确保你界面上的TextBox控件名称和代码里的
TextBoxEmail、TextBoxDepartment一致,或者根据实际控件名修改代码。 - 加入
IsDBNull判断是为了避免数据库中对应列值为空时,程序抛出运行时异常。
内容的提问来源于stack exchange,提问作者CyronDnB
相关产品推荐
相关产品推荐

