DataGridViewのコンボボックスについて


hiroko  2008-10-04 00:26:19  No: 140564

VB.NET2008で開発しています。
以下のようなコードで、
DataGridViewのあるカラム(column1)のDataSourceに
mdbのテーブルを抽出表示しています。
プログラムを実行して1度目は、うまくグリッド上のコンボボックスに
読み込まれるのですが、
抽出条件kidを変更して読み込んでもグリッド上のコンボボックスの
内容が変わりません。
読み込む前にds上の全datatableをremoveしても同じです。
カラムのテーブル情報を再度取得するには、
どうすればよいでしょうか?

Public da As OleDbDataAdapter
Public ds As New DataSet
Function LoadKoj(ByVal kid As String) As Integer
        Dim y As Integer
        Dim sql As String
        '----OPEN
        sql = "select "
        sql = sql & "koj.* "
        sql = sql & "from 工事 as koj "
        sql = sql & "where (koj.工事ID=" & kid & ") "
        sql = sql & "order by koj.auto_id "
        da = New OleDbDataAdapter(sql, "DB接続文字列")
        da.Fill(ds, "koj")
  
  '----コンボに接続
  With Form_Koji
            .Column1.DataSource = ds.Tables("koj")
            .Column1.ValueMember = "ID"
            .Column1.DisplayMember = "工事項目"
  End With

End Function


もょもと  2008-10-06 21:05:02  No: 140565

ds.Clear()が必要なのではありませんか?


hiroko  2008-10-08 03:12:13  No: 140566

すいません。
再読み込みをする前に

for i=0 to ds.Tables.Count -1
  ds.Tables.RemoveAt(i)
next
ds.Clear()

を実行しています。
DataGridViewでグリッド上に直接表示している別のテーブルは、
再読み込みで変更されますが、
DataGridViewのコンボボックスの中身だけが読み込み前のデータを
保持してしまいます。

どこか間違えているのでしょうか


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加