- PR -

DataGridViewComboBoxColumnのデータバインドについて

1
投稿者投稿内容
未記入
常連さん
会議室デビュー日: 2007/04/09
投稿数: 21
投稿日時: 2007-12-12 15:02
DataGridViewComboBoxColumnでリスト表示とデータ連結をするために
リスト用とデータ連結用の2つのデータテーブルを定義しています。

データ連結用のテーブルには、リスト用テーブルに入っていないデータも含まれています。
(例えば、リスト用のテーブルデータには (1)山田・(2)田中・(3)池田 しか入っていないが
データ連結用のテーブルデータには (1)山田・(2)田中・(3)池田 以外に (4)川田・(5)西田 が入っている、様な感じです)

フォームには

    DataGridView1
    ComboBox1
    データ連結BindingSource(データ連結用)
    リスト表示BindingSource(リスト表示用)

があります。(当然ですがBindingSourceとデータセットは連結しています)

ここでは"DisplayList"がリスト表示用テーブルのリスト名、
"ListName"がデータ連結用テーブルに表示されるリスト名とします。
"DisplayList"でのリストから選んだものが "ListName"にデータが格納されていきます。

ComboBoxのデータ連結なら
コード:
        ComboBox1.DataBindings.Add("Text", データ連結BindingSource, "ListName")

        ComboBox1.DataSource = リスト表示BindingSource
        ComboBox1.DisplayMember = "DisplayList"
        ComboBox1.ValueMember = "Value"

        ComboBox1.Name = "ComboBoxName"


ComboBoxだけなら、リスト表示テーブルにデータが入っていなくても、表示する分には問題ありません。リストもリスト表示用からの分が正常に表示されます。

しかしDataGridViewComboBoxColumnだと、リスト表示テーブルにデータが入っていないと、表示する時にエラーになってしまいます。
コード:
        Dim col As New DataGridViewComboBoxColumn

        col.DataSource = リスト表示BindingSource
        col.DisplayMember = "DisplayList"
        col.ValueMember = "Value"

        col.Name = "Name"
        col.HeaderText = "HeaderText"

        DataGridView1.Columns.Add(col)


データソースの指定をデータ連結BindingSourceにすれば表示はできるのですが、今度はリスト表示がおかしくなります。
DataGridViewComboBoxColumnで、リスト表示テーブルにデータが入っていなくても
表示できるように(リストはリスト表示テーブルの内容に)したいのですが、どうすればよいのでしょうか?
要はComboBoxでいうところの
コード:
ComboBox1.DataBindings.Add("Text", データ連結BindingSource, "ListName")


上記の一文(データバインド)にあたるものがあればそれでできるとは思うのですが・・・
ぶさいくろう
ぬし
会議室デビュー日: 2005/11/22
投稿数: 1232
お住まい・勤務地: 川崎市(は俺も含めてロクな人間が住んでないよw)
投稿日時: 2007-12-14 11:06
引用:

未記入さんの書き込み (2007-12-12 15:02) より:
DataGridViewComboBoxColumnでリスト表示とデータ連結をするために
リスト用とデータ連結用の2つのデータテーブルを定義しています。

データ連結用のテーブルには、リスト用テーブルに入っていないデータも含まれています。
(例えば、リスト用のテーブルデータには (1)山田・(2)田中・(3)池田 しか入っていないが
データ連結用のテーブルデータには (1)山田・(2)田中・(3)池田 以外に (4)川田・(5)西田 が入っている、様な感じです)

フォームには

    DataGridView1
    ComboBox1
    データ連結BindingSource(データ連結用)
    リスト表示BindingSource(リスト表示用)

があります。(当然ですがBindingSourceとデータセットは連結しています)

ここでは"DisplayList"がリスト表示用テーブルのリスト名、
"ListName"がデータ連結用テーブルに表示されるリスト名とします。
"DisplayList"でのリストから選んだものが "ListName"にデータが格納されていきます。

ComboBoxのデータ連結なら
コード:
        ComboBox1.DataBindings.Add("Text", データ連結BindingSource, "ListName")

        ComboBox1.DataSource = リスト表示BindingSource
        ComboBox1.DisplayMember = "DisplayList"
        ComboBox1.ValueMember = "Value"

        ComboBox1.Name = "ComboBoxName"


ComboBoxだけなら、リスト表示テーブルにデータが入っていなくても、表示する分には問題ありません。リストもリスト表示用からの分が正常に表示されます。

しかしDataGridViewComboBoxColumnだと、リスト表示テーブルにデータが入っていないと、表示する時にエラーになってしまいます。
コード:
        Dim col As New DataGridViewComboBoxColumn

        col.DataSource = リスト表示BindingSource
        col.DisplayMember = "DisplayList"
        col.ValueMember = "Value"

        col.Name = "Name"
        col.HeaderText = "HeaderText"

        DataGridView1.Columns.Add(col)


データソースの指定をデータ連結BindingSourceにすれば表示はできるのですが、今度はリスト表示がおかしくなります。
DataGridViewComboBoxColumnで、リスト表示テーブルにデータが入っていなくても
表示できるように(リストはリスト表示テーブルの内容に)したいのですが、どうすればよいのでしょうか?
要はComboBoxでいうところの
コード:
ComboBox1.DataBindings.Add("Text", データ連結BindingSource, "ListName")


上記の一文(データバインド)にあたるものがあればそれでできるとは思うのですが・・・



http://forums.microsoft.com/MSDN-JA/ShowPost.aspx?PostID=2541574&SiteID=7

引用:

http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=42667&forum=7&0
こちらでも同じ質問をしていますが、回答がつきにくい(?)ためこちらでも質問させて頂きます。


さて。なんで回答がつかないんだろうねぇ。
1

スキルアップ/キャリアアップ(JOB@IT)