- PR -

バインドされたDataGridViewにプログラムで決まった内容の行を追加したい。

1
投稿者投稿内容
One.net
大ベテラン
会議室デビュー日: 2008/03/01
投稿数: 202
投稿日時: 2008-10-05 09:37
WindowsXP、VB2005EE Access2003 でWindowsアプリケーションを開発中です。
DataSourceにバインドにプログラムで決まった内容の行を追加したいのですが、
BindingSource.AddNew() やDataGridView.AllowUserToAddRows = True の使い
方が悪いのか、うまく動作してくれません。そこでテスト用プロジェクトに次
のような実験を繰り返しています。

あるDataSourceにバインドされたDataGridViewがあります。このDataGridView1
にボタンを押すごとに、あらかじめ定められた内容のレコード行を追加させたく、
Button1のハンドラーに次の通り記述しました。
※あらかじめ定められた内容はRoX - 1とRoXとしています。
うまくいかない結果は次の通りです。
1.1回押すと0行に定められた内容が表示され、1行に新行が作成されます。
2.連続2回押すと2回目は、0行目が空行(新行?)、1行目は定められた内
容が表示

コード:
        Dim RoX As Integer = DataGridView1.RowCount
        BindingSource1.AddNew()
        DataGridView1(0, RoX - 1).Value = RoX - 1
        DataGridView1(1, RoX - 1).Value = RoX
        DataGridView1.AllowUserToAddRows = True

ぴあちゃん
ぬし
会議室デビュー日: 2008/02/07
投稿数: 287
投稿日時: 2008-10-05 13:34
連続2回ってダブルクリックのこと?
それとも、処理中に2回目を押すってこと?

One.net
大ベテラン
会議室デビュー日: 2008/03/01
投稿数: 202
投稿日時: 2008-10-05 15:30
ぴあちゃんさん、お返事ありがとうございます。
ここで言います連続2回って、ダブルクリックではなく、シングルクリックを2回押し
たことです。実は1回目も正常に表示しているように見えたのですが、マウスで新規行
をクリックして移動すると表示されていた1行目の内容が消えてしまいます。

その後、Google やいろんな検索で調べいますと、バインドされたDataGridViewにプログ
ラムから1行追加して定められた内容のレコードを作成することは出来ないような感じ
がしましたので、次のようにしてデータセットのテーブルに直接書き込んで、書き込ん
だレコードのキーワードでフィルターを掛けてバインドされたDataGridViewに表示させ
たところ正常に動作しています。
コード:

Dim dr As DataSet1.Table1Row
dr = DtaSet1.Table1.NewTable1Row
dr.record_No = R_No.ToString
dr.field1 = "abc"
dr.field2 = "def"
dr.field3 = "ghi"
DataSet1.Table1.Rows.Add(dr)


バインドされていないDataGridViewには次のようにすれば、簡単に追加できますが
→ DataGridView1.Rows.Add("1列目データ", "2列目データ")
バインドされた DataGridViewに指定した内容のレコードを追加させる方法が解りません
よろしくお願いいたします。

[ メッセージ編集済み 編集者: One.net 編集日時 2008-10-05 15:38 ]
One.net
大ベテラン
会議室デビュー日: 2008/03/01
投稿数: 202
投稿日時: 2008-10-05 20:44
自己解凍。
すみません。私のボンミスです。
最初の質問の通り、バインドされたDataGridViewに表示するレコードを新規作成する
レコード番号に絞込みを次のように掛けていました。
→ BindingSource1.Filter = "record_No = " & R_No
ところがプログラムから定められた内容のレコードを1行追加するときに絞込みを
しているキーワード(record_No)を設定しないでレコードを追加しようとしていました。
このためDataSetの認識されないままの中途半端になっていたようです。
大変わかりにくい説明で、ご迷惑をおかけしたと思いますが。どうぞお許し下さい。

[ メッセージ編集済み 編集者: One.net 編集日時 2008-10-05 20:46 ]
1

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