Databind到具有一个或多个可选参数的对象参数

时间:2011-03-22 16:36:46

标签: vb.net radiobuttonlist data-binding datatextfield

我有一个名为'PERSON'的对象

此人物对象有一个标题,firstName&姓氏财产以及目前无关紧要的许多其他财产。它还有一个名为Fullname的只读属性,它根据在您调用PERSON.FULLNAME时传递的可选参数'withTitles'连接上面提到的两个或三个参数

PERSON.FULLNAME(true)< - 如果有任何

,将添加标题

PERSON.FULLNAME(false)< - 将给出没有标题的名称

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 个答案:

答案 0 :(得分:2)

我建议您创建两个属性FullNameFullNameWithTitle。虽然属性可以采用参数,但它们应该是对象的索引器而不是可操作的值。例如,表示Color个对象集合的类可能具有Item属性,可选索引是要返回的特定颜色。