2

'PERSON'というオブジェクトがあります

このpersonオブジェクトには、title、firstName、Surnameプロパティ、および現時点では関係のない他の多くのプロパティがあります。また、PERSON.FULLNAMEを呼び出すときに渡されるオプションのパラメーター「withTitles」に応じて、上記の2つまたは3つのパラメーターを連結するFullnameと呼ばれる読み取り専用プロパティもあります。

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のオブジェクトをやや打ち負かします!

どんな助けでも感謝されるでしょう。Kev。

4

1 に答える 1

2

と の 2 つのプロパティを作成することをお勧めしFullNameますFullNameWithTitle。プロパティはパラメーターを取ることができますが、オブジェクトへのインデクサーであり、アクション可能な値ではありません。たとえば、Colorオブジェクトのコレクションを表すクラスにはItem、返される特定の色であるオプションのインデックスを持つプロパティがある場合があります。

于 2011-03-22T17:14:04.027 に答える