2009-04-10 15 views
1

ソリューション

は、これは私が思い付いたものです:DataBound ComboBoxのDisplayMemberをカスタマイズすることはできますか?

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 

私はこれが誰かを助けることを願っています! - 私が設定した値を保持しつつ、「DESCRIPT key_code」私はDisplayMemberショーを持つことができるようにしたい

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


私はDataTableのから移入されたコンボボックスを持っています。

これも可能ですか?ありがとう

答えて

3

データテーブルを使用しているので、値を計算する新しい列を作成する必要があります。

私は個人的に私のデータバインディングを行うためにオブジェクトを使用するように移動しました。私のクラスでは、単に私のためのフォーマットを行う別のパブリックプロパティ "ListDisplayText"を追加します。

+0

サンプルまたはサンプルに向けて教えてください。私はあなたが言っていることを理解していると思うが、確信したい。 – Anders

+0

あなたは自分自身を解決するように見えます!それは私が取っていたもののラインに沿っています。 –

+0

+あなたのためのポイント、正しい方向へのプッシュのおかげで:) – Anders

関連する問題