tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトルDataBindngs
記事No4434
投稿日: 2006/10/19(Thu) 19:49
投稿者poiu
お世話になっております。
DataBindingsのことでわからないがあるので教えてください。

現在コンボボックスにGrapeCity.win.input.Comboboxを使用しているのですが、
Comboboxの選択内容とDataSetを連結させることができません。

出来ない理由としてはComboBoxのプロパティにSelectedValueが存在せず、
SeletedItem(ComboItemクラス)のプロパティとしてValueがあるためDataBindings.Addで第1引数に指定することが出来ないためです。

このようなクラス構成の場合でもDataBindingsを行う方法はないのでしょうか?
ご存知の方がいれば教えてください。


■標準のComboBox(希望の動作)
'ComboBoxのプルダウン内容を設定
'表示内容に名称
'取得内容に番号
Me.combo_Employment.DataSource = employmentTable
Me.combo_Employment.DisplayMember = "EmploymentName"
Me.combo_Employment.ValueMember = "EmploymentID"

'DataSet==>employeeSetの中のDataTable==>T_EmployeeのEmploymentIDとcombo_EmploymentのValueを紐付ける
Me.combo_Employment.DataBindings.Add("SelectedValue", employeeSet, "T_Employee.EmploymentID")
                                        ↑標準のComboBoxのプロパティで存在するため指定可能

■試した方法

(1) Me.combo_Employment.DataBindings.Add("SelectedItem.Value", employeeSet, "T_Employee.EmploymentID")
(2) Me.combo_Employment.SelectedItem.DataBindings.Add("Value", employeeSet, "T_Employee.EmploymentID")
                        ↑ ComboItemクラスはDataBindingsメソッドを所持していないため不可

[ツリー表示へ]
タイトルRe: DataBindngs
記事No4435
投稿日: 2006/10/19(Thu) 21:09
投稿者魔界の仮面弁士
> 現在コンボボックスにGrapeCity.win.input.Comboboxを使用しているのですが、

そのコントロールを持っていないので、できるかどうかはわかりませんが、
もしそれが NotInheritable なクラスで無いのだとすれば、それを継承して、
SelectedValue プロパティを追加実装してしまえば、解決できるかも知れません。

[ツリー表示へ]
タイトルRe^2: DataBindngs
記事No4436
投稿日: 2006/10/20(Fri) 00:37
投稿者poiu
> > 現在コンボボックスにGrapeCity.win.input.Comboboxを使用しているのですが、
>
> そのコントロールを持っていないので、できるかどうかはわかりませんが、
> もしそれが NotInheritable なクラスで無いのだとすれば、それを継承して、
> SelectedValue プロパティを追加実装してしまえば、解決できるかも知れません。

魔界の仮面弁士さん、ご返答ありがとうございます。
魔界の仮面弁士さんの提示された方法で解決できそうです。
継承したコントロールを作成して対応してみます。

ありがとうございました。

[ツリー表示へ]
タイトルRe^3: DataBindngs
記事No4437
投稿日: 2006/10/20(Fri) 13:09
投稿者poiu
> 魔界の仮面弁士さん、ご返答ありがとうございます。
> 魔界の仮面弁士さんの提示された方法で解決できそうです。
> 継承したコントロールを作成して対応してみます。

GrapeCity.ComboBoxを継承したコントロールを作成してみました。
結論はSet時に下記のエラーが発生しDataBindingsできませんでした。
今回はDataBindingsを使用しない方向で進めたいと思います。

■エラー内容
System.ArgumentException: データソース プロパティを設定したときに Items コレクションを変更できません。

■コントロール側ソース
    Public Property _SelectedValue() As Object
        Get
            If (Me.SelectedItem Is Nothing) Then
                Return Nothing
            End If
            Return Me.SelectedItem.Value
        End Get
        Set(ByVal _value As Object)
            If (Me.SelectedItem Is Nothing) Then
                Return
            End If
            Me.SelectedItem.Value = _value
        End Set

■Bind側ソース
Me.combo_Employment.DataBindings.Add("_SelectedValue", employeeSet, "T_Employee.EmploymentID")
↑ArgumentException発生

魔界の仮面弁士さん、助言ありがとうございました。

[ツリー表示へ]