【问题标题】:Databind to object parameter that has one or more optional parameters数据绑定到具有一个或多个可选参数的对象参数
【发布时间】:2011-03-23 01:14:04
【问题描述】:

我有一个对象,叫做“PERSON”

此人对象具有标题、名字和姓氏属性以及许多其他目前无关的属性。它还有一个名为 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 的对象!

我们将不胜感激。 凯夫。

【问题讨论】:

  • 您是否找到了将控件绑定到带有附加参数的属性的任何方法?

标签: vb.net radiobuttonlist data-binding datatextfield


【解决方案1】:

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

【讨论】:

  • 谢谢。这是我的第一个想法,在此期间我就这么做了,希望能找到更好的方法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-03-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多