如果selectedindex改变了,在文本框中显示数据
ifselectedindex changed , show data in a textbox
我已将访问数据库链接到我的表单。
我有 1 table , 2 行
1 = 研究型短文本
2 = 研究详情(长文本)
在我的组合框 1 中,我绑定了我的研究类型行,这样我就可以选择一种研究类型。
现在的问题:如何将详情数据绑定到其下方的richtextbox,以便在选择研究类型后立即显示研究数据?
我试过 if else 连击,试试 catch 连击,
我在想我实际上想多了这里的问题。
“select 从下拉菜单”并在文本框中显示结果的最简单方法是什么。
我是 vb.net 初学者
Public Class Onderzoeken
Private Sub Onderzoeken_Load(sender As Object, e As EventArgs) Handles MyBase.Load
'TODO: This line of code loads data into the 'PatientenDatabaseDataSetX.tbl_OnderzoeksTypes' table. You can move, or remove it, as needed.
Me.Tbl_OnderzoeksTypesTableAdapter.Fill(Me.PatientenDatabaseDataSetX.tbl_OnderzoeksTypes)
End Sub
Private Sub cboxOnderzoek_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cboxOnderzoek.SelectedIndexChanged
If cboxOnderzoek.SelectedItem = Nothing Then
cboxOnderzoek.Text = ""
Else
rtbBeschrijvingOnderzoek.Text = CStr(CType(cboxOnderzoek.SelectedItem, DataRowView)("OZ_Onderzoeksbeschrijving"))
End If
End Sub
End Class
我现在添加了该页面的全部代码,代码不多,但如前所述:我将绑定源和显示成员“researchtype”添加到组合框。
因此,当我开始填写表格时,我可以选择一种研究类型。
现在我需要在 richtextbox
中显示研究的描述
在Form.Load
...
我有一个函数 returns 一个 DataTable
包含名为 Name
和 Type
的列。我将 ComboBox 绑定到 DataTable
并将 DisplayMember
设置为 "Name"
。 ComboBox 中的每个项目都包含整个 DataRowView
。我将 TextBox
设置为第一行 (dt(0)("Type")
) Type
列值,以便为初始选择显示正确的信息。
我将更改文本框显示的代码放在 ComboBox1.SelectionChangeCommitted
中,因为其他更改事件将产生 NRE,因为在加载表单时 .SelectedItem
尚未设置。只有在用户做出选择时才会发生提交事件。
首先,将 SelectedItem
转换为其基础类型 DataRowView
。然后您需要 Type
列的值。此值分配给文本框的文本 属性。
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim dt = LoadCoffeeTable()
ComboBox1.DataSource = dt
ComboBox1.DisplayMember = "Name"
TextBox1.Text = dt(0)("Type").ToString
End Sub
Private Sub ComboBox1_SelectionChangeCommitted(sender As Object, e As EventArgs) Handles ComboBox1.SelectionChangeCommitted
TextBox1.Text = DirectCast(ComboBox1.SelectedItem, DataRowView)("Type").ToString
End Sub
只需用 Researchtype
代替 Name
,用 Researchdetails
代替 Type
。
使用'OleDbDataAdapter'填充数据集后,您可以为您的ComboBox设置'DisplayMember'和'ValueMember'。每次您的 ComboBox 的索引更改时,它的 'ValueMember' 将显示在 richtextbox 中。
这是您可以参考的代码。
Private dataset As DataSet = New DataSet()
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim connString As String = "your connection String"
Using con As OleDbConnection = New OleDbConnection(connString)
con.Open()
Dim cmd As OleDbCommand = New OleDbCommand()
cmd.Connection = con
cmd.CommandText = "SELECT Researchtype, Researchdetails FROM yourtable"
Dim adpt As OleDbDataAdapter = New OleDbDataAdapter(cmd)
adpt.Fill(dataset)
End Using
ComboBox1.DisplayMember = "Researchtype"
ComboBox1.ValueMember = "Researchdetails"
ComboBox1.DataSource = dataset.Tables(0)
End Sub
Private Sub ComboBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox1.SelectedIndexChanged
RichTextBox1.Text = ComboBox1.SelectedValue.ToString()
End Sub
我的测试结果。
我已将访问数据库链接到我的表单。 我有 1 table , 2 行 1 = 研究型短文本 2 = 研究详情(长文本)
在我的组合框 1 中,我绑定了我的研究类型行,这样我就可以选择一种研究类型。
现在的问题:如何将详情数据绑定到其下方的richtextbox,以便在选择研究类型后立即显示研究数据?
我试过 if else 连击,试试 catch 连击, 我在想我实际上想多了这里的问题。
“select 从下拉菜单”并在文本框中显示结果的最简单方法是什么。 我是 vb.net 初学者
Public Class Onderzoeken
Private Sub Onderzoeken_Load(sender As Object, e As EventArgs) Handles MyBase.Load
'TODO: This line of code loads data into the 'PatientenDatabaseDataSetX.tbl_OnderzoeksTypes' table. You can move, or remove it, as needed.
Me.Tbl_OnderzoeksTypesTableAdapter.Fill(Me.PatientenDatabaseDataSetX.tbl_OnderzoeksTypes)
End Sub
Private Sub cboxOnderzoek_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cboxOnderzoek.SelectedIndexChanged
If cboxOnderzoek.SelectedItem = Nothing Then
cboxOnderzoek.Text = ""
Else
rtbBeschrijvingOnderzoek.Text = CStr(CType(cboxOnderzoek.SelectedItem, DataRowView)("OZ_Onderzoeksbeschrijving"))
End If
End Sub
End Class
我现在添加了该页面的全部代码,代码不多,但如前所述:我将绑定源和显示成员“researchtype”添加到组合框。 因此,当我开始填写表格时,我可以选择一种研究类型。 现在我需要在 richtextbox
中显示研究的描述在Form.Load
...
我有一个函数 returns 一个 DataTable
包含名为 Name
和 Type
的列。我将 ComboBox 绑定到 DataTable
并将 DisplayMember
设置为 "Name"
。 ComboBox 中的每个项目都包含整个 DataRowView
。我将 TextBox
设置为第一行 (dt(0)("Type")
) Type
列值,以便为初始选择显示正确的信息。
我将更改文本框显示的代码放在 ComboBox1.SelectionChangeCommitted
中,因为其他更改事件将产生 NRE,因为在加载表单时 .SelectedItem
尚未设置。只有在用户做出选择时才会发生提交事件。
首先,将 SelectedItem
转换为其基础类型 DataRowView
。然后您需要 Type
列的值。此值分配给文本框的文本 属性。
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim dt = LoadCoffeeTable()
ComboBox1.DataSource = dt
ComboBox1.DisplayMember = "Name"
TextBox1.Text = dt(0)("Type").ToString
End Sub
Private Sub ComboBox1_SelectionChangeCommitted(sender As Object, e As EventArgs) Handles ComboBox1.SelectionChangeCommitted
TextBox1.Text = DirectCast(ComboBox1.SelectedItem, DataRowView)("Type").ToString
End Sub
只需用 Researchtype
代替 Name
,用 Researchdetails
代替 Type
。
使用'OleDbDataAdapter'填充数据集后,您可以为您的ComboBox设置'DisplayMember'和'ValueMember'。每次您的 ComboBox 的索引更改时,它的 'ValueMember' 将显示在 richtextbox 中。
这是您可以参考的代码。
Private dataset As DataSet = New DataSet()
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim connString As String = "your connection String"
Using con As OleDbConnection = New OleDbConnection(connString)
con.Open()
Dim cmd As OleDbCommand = New OleDbCommand()
cmd.Connection = con
cmd.CommandText = "SELECT Researchtype, Researchdetails FROM yourtable"
Dim adpt As OleDbDataAdapter = New OleDbDataAdapter(cmd)
adpt.Fill(dataset)
End Using
ComboBox1.DisplayMember = "Researchtype"
ComboBox1.ValueMember = "Researchdetails"
ComboBox1.DataSource = dataset.Tables(0)
End Sub
Private Sub ComboBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox1.SelectedIndexChanged
RichTextBox1.Text = ComboBox1.SelectedValue.ToString()
End Sub
我的测试结果。