Привязка данных к параметру объекта, который имеет один или несколько необязательных параметров - PullRequest
2 голосов
/ 22 марта 2011

У меня есть объект с именем 'PERSON'

Этот объект person имеет свойство title, firstName & Surname, а также многие другие, которые на данный момент не имеют значения.Он также имеет свойство только для чтения с именем Fullname, которое объединяет два или три параметра, упомянутых выше, в зависимости от необязательного параметра withTitles, передаваемого при вызове PERSON.FULLNAME

PERSON.FULLNAME (true) <- добавитназвания, если есть какие-либо </p>

PERSON.FULLNAME (false) <- даст имя без заголовка </p>

Public ReadOnly Property FullName(Optional ByVal withTitle As Boolean = False) As String
            Get
                    Dim _ttle As String = Me.Title
                    Select Case withTitle
                        Case True
                            If _ttle.Length > 0 Then _ttle += " " Else _ttle = String.Empty
                        Case False
                            _ttle = String.Empty
                    End Select
                    If Me.FirstName <> "" And Me.LastName <> "" Then
                        Return _ttle & Me.FirstName & " " & Me.LastName
                    ElseIf Me.FirstName = "" And Me.LastName <> "" Then
                        Return _ttle & Me.LastName
                    ElseIf Me.FirstName <> "" And Me.LastName = "" Then
                        Return _ttle & Me.FirstName
                    ElseIf Me.FirstName = "" And Me.LastName = "" Then
                        Return Me.ContactName
                    End If
              End Get
        End Property

Мои проблемы появляются, когда я пытаюсь связать свою PERSONCOLLECTION (коллекциюОбъект PERSON) для RadioButtonList или любого другого элемента управления привязкой при этом.

        RadioButtonList1.DataSource = _personCollection

        RadioButtonList1.DataTextField = "FullName"
        RadioButtonList1.DataValueField = "ContactID"
        RadioButtonList1.DataBind()

Я получаю сообщение об ошибке: PERSON не содержит свойства 'FullName'.Если я изменю это значение на любое другое свойство, которое не принимает параметр, оно работает как положено.

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

Я думал о циклическом перемещении по коллекции, чтобы добавить их вручную, но это своего рода побеждает объект DataBinding!

Любая помощь будет оценена.Кев.

1 Ответ

2 голосов
/ 22 марта 2011

Я бы порекомендовал создать два свойства, FullName и FullNameWithTitle.Хотя свойства могут принимать параметры, они предназначены для индексирования объекта, а не для действий.Например, класс, представляющий коллекцию объектов Color, может иметь свойство Item с необязательным индексом, являющимся конкретным возвращаемым цветом.

...