Можно ли настроить DisplayMember DataBound ComboBox? - PullRequest
1 голос
/ 10 апреля 2009

Решение

Вот что я придумал:

Public Class IndexedDropDownItem
    Private _KeyCode, _Display As String
    Public Property KeyCode() As String
        Get
            Return _KeyCode
        End Get
        Set(ByVal value As String)
            _KeyCode = value
        End Set
    End Property
    Public Property Display() As String
        Get
            Return _Display
        End Get
        Set(ByVal value As String)
            _Display = value
        End Set
    End Property
    Sub New(ByVal KeyIndex As String, ByVal ItemDisplay As String)
        KeyCode = KeyIndex
        Display = ItemDisplay
    End Sub
    Public Overrides Function ToString() As String
        Return String.Format("{0} - {1}", KeyCode, Display)
    End Function
End Class

Реализация:

With myDropDown
    Dim oItem As IndexedDropDownItem = Nothing
    For Each dr As Data.DataRow In oTemp.Rows
        oItem = New IndexedDropDownItem(dr.Item("key_code"), _ 
                                        dr.Item("descript"))
        .Items.Add(oItem)
        oItem = Nothing
    Next
End With

Манипуляция:

Dim _KeyCode, _Display As String
With CType(dataPathComboBox.SelectedItem, IndexedDropDownItem)
    _KeyCode = .KeyCode
    _Display = .Display
End With

Надеюсь, это кому-нибудь поможет!


У меня есть ComboBox, который заполняется из DataTable:

With myComboBox
    .DataSource = myDataTable
    .DisplayMember = "descript"
    .ValueMember = "key_code"
End With

Я хочу, чтобы DisplayMember показывал "key_code - descript", сохраняя значение, которое я установил.

Это вообще возможно? Спасибо

1 Ответ

3 голосов
/ 10 апреля 2009

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

Лично я перешел к использованию объектов для привязки данных, и в своем классе я просто добавил другое открытое свойство "ListDisplayText", которое выполняет форматирование для меня.

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