DOBON.NET DOBON.NETプログラミング掲示板過去ログ

DataRepeader上のComboBoxの制御についてです

環境/言語:[Windows 7 visual studio 2010 .net]
分類:[.NET]

visual basic 2010です。
表形式を表示するときにdatarepeaterを利用しておりますが
comboboxの制御がうまくいきません。
どなたか、わかる方教えていただけないでしょうか?

こちらであがいた結果です。
@デザインでデータリピーターを設定する。
Aプログラム側で領域に対してbindする。
Bテキストボックスには、bindしたデータが正しく投入される。
Cコンボボックスには指定したデータソースの先頭行が表示されている。
Dコンボボックスの内容を設定すると全行のコンボボックスが一括で変更されます。
※ CとDの制御が望んでいる形ではありません。

上記パターンから、ネット上をいろいろ調べてみるとItemClonedを利用して行うよいと
情報を得ましたので実装してみると以下の流れになりました。
Cは取得されたデータが表示されます。
Dがデータソースの指定が行えないため、選択すらできません。

ソースは量が多くて貼り付けできないのですが、上記内容でご回答いただけると助かります。
■No30725に返信(やすぴょんPさんの記事)

短いサンプルですが、こんな感じでどうでしょう?

Public Class Form1
    Private tbl As DataTable

    Public Sub New()
        ' この呼び出しはデザイナーで必要です。
        InitializeComponent()

        ' InitializeComponent() 呼び出しの後で初期化を追加します。
        tbl = New DataTable()
        With tbl.Columns
            .Add("Col1", GetType(String))
            .Add("Col2", GetType(String))
            .Add("CmbDataSource", GetType(List(Of String)))
        End With
        AddHandler tbl.RowChanged, AddressOf tbl_RowChanged

        DataRepeater1.DataSource = tbl
        ComboBox1.DataBindings.Add("DataSource", tbl, "CmbDataSource")
        ComboBox1.DataBindings.Add("SelectedValue", tbl, "Col1")
        TextBox1.DataBindings.Add("Text", tbl, "Col2")
    End Sub

    Private Sub tbl_RowChanged(sender As Object, e As DataRowChangeEventArgs)
        If e.Action <> DataRowAction.Add Then Exit Sub
        e.Row("CmbDataSource") = New List(Of String) From {"a", "b", "c"}
    End Sub

    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
        Dim row = tbl.NewRow()
        tbl.Rows.Add(row)
    End Sub

End Class

DOBON.NET | プログラミング道 | プログラミング掲示板