Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Combobox [Vb.Net], SelectedValue 
:(
    Опции темы
FallFan
Дата 13.11.2012, 15:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 83
Регистрация: 30.3.2008
Где: Санкт-Петербург

Репутация: нет
Всего: нет



Доброго времени суток!

Имеется Combobox , который заполнен объектами ItemData:

Код

    Public Structure ItemData

        Public Text As String
        Public ID As String

        Public Sub New(ByVal _Text As String, ByVal _ID As String)
            Text = _Text
            ID = _ID
        End Sub

        Public Overrides Function ToString() As String
            Return Text
        End Function

    End Structure


Добавление производится из БД, вводятся данные о имени клиента и его ID  в БД. 

Пример:
Код

Combobox.Items.Add(New ItemData("Иванов","1"))


При записывании измененного значения Combobox в БД проблем не возникает: ItemData.ID в ID клиента, ItemData.Text в Имя клиента. 

Допустим весь список заполнен текстом " Иванов", но у каждого из них свой ID

Вопрос: Как выставить значение Combobox по требуемому значению ItemData.ID ? Не могу понять, как правильно в данном случае задействовать ValueMember.

Спасибо!

PM   Вверх
diadiavova
Дата 13.11.2012, 16:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 18
Всего: 142



Используй свойство DisplayMember. Правда с полями оно вроде не работает, так что в своей структуре замени поля свойствами, да и вообще, публичные поля - зло.


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
FallFan
Дата 13.11.2012, 17:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 83
Регистрация: 30.3.2008
Где: Санкт-Петербург

Репутация: нет
Всего: нет



Создал небольшой пример для разбора.
Изменил ItemData.
В Button2_Click_1 написал код (один из вариантов), который, по моему мнению, должен работать. 
Однако получить SelectedIndex для строки с ItemData2.ID = "3" я не могу. 
Т.е. как мне "выставить" строку в combobox по условию Combobox.SelectedItem.ID = "3" ?

Код

Option Explicit On

Public Structure ItemData2

    Property ID As String
    Property Text As String

    Public Sub New(ByVal _Text As String, ByVal _ID As String)
        Text = _Text
        ID = _ID
    End Sub

    Public Overrides Function ToString() As String
        Return Text
    End Function

End Structure

Public Class frmTest

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        'Кнопка заполнения списка
        Dim t As ItemData2
        Dim count As Integer

        cmbTest.Items.Clear()
        For count = 0 To 5
            t = New ItemData2("DisplayText_№" & CStr(count), CStr(count))
            cmbTest.Items.Add(t)
        Next

    End Sub

    Private Sub cmbTest_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmbTest.SelectedIndexChanged
        'Вывод информации об элементе
        MsgBox("ID:" & Me.cmbTest.SelectedItem.ID & vbNewLine & _
               "Text:" & Me.cmbTest.SelectedItem.Text & vbNewLine & _
               "Stext:" & Me.cmbTest.SelectedText & vbNewLine & _
               "Svalue:" & Me.cmbTest.SelectedValue)

    End Sub

    Private Sub Button2_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        cmbTest.DisplayMember = "Text"
        cmbTest.ValueMember = "ID"
        cmbTest.SelectedValue = "3"
        MsgBox(cmbTest.SelectedIndex)
    End Sub
End Class

PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Partizan
PashaPash

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | .NET для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.1404 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.