Столбец SQL в TextBox (из ComboBox) - PullRequest
0 голосов
/ 30 января 2019

Мне удалось добавить данные в ComboBox из столбца из моей таблицы SQL, но мне нужны строки со всех сторон для отображения в остальных текстовых полях.(Надеюсь, я правильно сформулировал это).

Вот мой код в настоящее время:

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, но мне нужносоответствующие строки из двух других столбцов, которые являются EMAIL_ADDRESS и DEPARTMENT для добавления в TextBoxes из того, что выбрано в ComboBox.

Ответы [ 2 ]

0 голосов
/ 30 января 2019

Я предлагаю вам использовать BindingSource, чтобы сделать это.

Попробуйте это:

1 - Объявите тип вашей переменной BindingSource с событиями.Кроме того, объявите, что ваш набор данных будет использоваться для данных.

Dim WithEvents BS As New BindingSource
Dim ds As New DataSet

2- В вашем Form Load событии запросите ваши данные и свяжите их как с Binding Source, так и с элементом управления ComboBox.

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)
   da.Fill(ds, "myPopulatedTable")

   ComboBox1.DisplayMember = "id"
   ComboBox1.DataSource = ds.Tables("myPopulatedTable")

   'Here the new code'
   BS.DataSource = ds
   BS.DataMember = "myPopulatedTable"

End Sub

3- Добавьте Sub Procedure для отображения ваших данных в других элементах управления текстовыми полями.

Private Sub DISPLAYRECORD(Optional ByVal table As String = "myPopulatedTable")
        TextBox1.Text = ds.Tables(table).Rows(Me.BS.Position)("column1").ToString
        TextBox2.Text = ds.Tables(table).Rows(Me.BS.Position)("column2").ToString()
        TextBox2.Text = ds.Tables(table).Rows(Me.BS.Position)("column3").ToString()
End Sub

4- В событии PositionChanged вашего источника привязки вызовите этот субпроцедура (см. выше)

Private Sub BS_PositionChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles BS.PositionChanged
        DISPLAYRECORD()
 End Sub

5- И наконец, чтобы синхронизировать данные с выбором ComboBox, вам необходимо изменить положение этого источника привязки в соответствии с выбором индекса ComboBox

Private Sub ComboBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox1.SelectedIndexChanged
        BS.Position = ComboBox1.SelectedIndex
End Sub
0 голосов
/ 30 января 2019

Под событием SelectedIndex_Changed ComboBox;Введите следующий код.

Dim dt As New DataTable
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)
    da.Fill(dt)
    ComboBox1.DisplayMember = "DISPLAY_NAME"
    ComboBox1.DataSource = dt

End Sub
Private Sub ComboBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox1.SelectedIndexChanged
    Textbox1.Text = CStr(dt.Rows(ComboBox1.SelectedIndex)("EMAIL_ADDRESS"))
    Textbox2.Text = CStr(dt.Rows(ComboBox1.SelectedIndex)("DEPARTMENT"))
End Sub

Вам потребуется объявить таблицу данных dt вне события загрузки вашей формы, чтобы ее можно было увидеть событию SelectedIndex_Changed поля со списком.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...