Как получить значение из второго столбца из поля со списком, которое связано с базой данных SQL

Я создал приложение WindowForm с полем со списком, в котором есть режим привязки данных к представлению в базе данных SQL и текстовому полю.

Запрос представления: «ВЫБЕРИТЕ [CompanyName],CountryName FROM [CompanyRefTable]»

Члены выпадающего списка следующие: Источник данных: CDALLENTITIESLISTBindingSource DisplayMember: ИмяКомпании ValueMember: ИмяКомпании SelectedValue: ИмяКомпании

Я внес некоторые изменения в код (обновлено на странице)

Теперь я получаю значения из второго столбца :)

Мой код:

    Dim rowView As DataRowView = TryCast(Me.cmbEntity.SelectedItem, DataRowView)
    If (Not rowView Is Nothing) Then
        Dim row As DataRow = rowView.Row
        Dim subjectName As String = DirectCast(row.Item("CountryName"), String)
        Me.txtCountry.Text = subjectName.ToString
    End If

Спасибо за помощь!

Возможный дубликат Что такое NullReferenceException и как его исправить?, я уверен, что эта ветка объяснит и ответит более подробно о вашей ошибке, которую вы получаете.

zaggler 23.01.2019 15:16

Нет такого понятия, как ComboBox, связанный с базой данных SQL. Предположительно реальный сценарий заключается в том, что вы заполняете DataTable из SQL Server, а затем привязываете его к ComboBox через BindingSource. DataTable — это DataTable. Откуда взялись данные, не имеет отношения к его управлению.

jmcilhinney 23.01.2019 15:18

SelectedValue — это значение из столбца, указанного ValueMember. Имеет ли смысл значение CountryName, индексировать его, а затем вызывать ToString по результату? Это риторический. Это не имеет смысла. Я предполагаю, что на самом деле вы пытаетесь получить всю строку, а затем получить значение из столбца с индексом 0. В этом случае вам нужен SelectedItem, а не SelectedValue, хотя с использованием свойства CurrentBindingSource был бы более подходящим. Затем вы приводите тип DataRowView, а затем индексируете его по имени столбца или порядковому номеру.

jmcilhinney 23.01.2019 15:21

Вы должны сначала проверить, является ли SelectedIndex-1, это происходит (всегда). Тогда Me.cmbEntity.SelectedValue(1).ToString? SelectedValue — это текущее значение, соответствующее ValueMember текущего SelectedItem. См. ListControl.GetItemText().

Jimi 23.01.2019 15:23

Спасибо jmcilhinney за вашу помощь.

Mirosław Gądek 23.01.2019 16:31
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
5
63
1

Ответы 1

Спасибо :jmcilhinney за ваш комментарий, он помог мне найти решение :)

Я нашел решение моей проблемы в Интернете:

    Dim rowView As DataRowView = TryCast(Me.cmbEntity.SelectedItem, DataRowView)
    If (Not rowView Is Nothing) Then
        Dim row As DataRow = rowView.Row
        Dim subjectName As String = DirectCast(row.Item("CountryName"), String)
        Me.txtCountry.Text = subjectName.ToString
    End If

Другие вопросы по теме