ELTabelleの拡張コンボボックス(SuperiorComboEditor)のアイテムをDataSourceを元に設定するときに、DisplayMemberが空であるデータが含まれたDataTableを設定すると、その拡張コンボを利用したMultiRowSheet.DataSourceを設定する際に"value is invalidate!"エラーが発生する。
……という現象に合った。勘弁してほしい。
' コンボボックスのアイテムとなるDataTable作成 Dim oSourceTbl As New DataTable() oSourceTbl.Columns.Add("value", GetType(Integer)) oSourceTbl.Columns.Add("text", GetType(String)) oSourceTbl.Rows.Add(New Object() {0, ""}) ' ■これをoSourceTbl.Rows.Add(New Object() {0, " "})にするとエラーが出なくなる For i As Integer = 3 To 20 oSourceTbl.Rows.Add(New Object() {i, String.Format("アイテム:{0}", i)}) Next ' テンプレートから対象セルを取得 Dim oTemplate As Template = oSheet.Template ' 一覧コンボボックスを設定 Dim oCombo As New Editors.SuperiorComboEditor() oCombo.ValueMember = "value" oCombo.DisplayMember = "text" oCombo.DataSource = oSourceTbl oCombo.Editable = False ' テキスト入力不可 oCombo.ValueAsIndex = False ' セルのValueにはoCombo.ValueMemberの値を持つ oTemplate.Cells(0, 0).Editor = oCombo ' テンプレートへ書き戻し oSheet.Template = oTemplate ' ■以下の行でエラーが発生する■ oSheet.DataSource = GetDisplayData() ' GetDisplayData()はDataTableを戻すものとする