C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

DataTableの更新


(過去ログ 7 を表示中)

[トピック内 4 記事 (1 - 4 表示)]  << 0 >>

■7429 / inTopicNo.1)  DataTableの更新
  
□投稿者/ くし&しも 二等兵(1回)-(2006/10/11(Wed) 15:28:28)

分類:[C#] 


分類:[C#] 

お世話になります。

ある画面でDataGridViewを使用しています。
列は2列あり1列目はコードで2列目は名称という列名です。

初期表示時はテーブルからデータを取得してDataTableにセットして、
それをBindingSourceオブジェクトのDataSourceプロパティにセットしています。さらにDataGridViewのDataSourceプロパティにそのBindingSourceオブジェクトを
セットして行なっています。

これはまあ一連の初期表示処理ですが、問題はここからです。
実はその画面にはコードと名称を入力する2つのテキストボックスと1つの「更新」ボタンがあります。
更新ボタンを押すとDataGridViewで選択されている行のコードと名称を
テキストボックスで入力されたコードと名称で更新するという処理です。

現在ソースは以下のようになっています。

// 現在選択されている行を取得する
// dgvはDataGridViewオブジェクトです。
BindingManagerBase bm = dgv.BindingContext[dgv.DataSource,dgv.DataMember];
// dtはDataTableオブジェクト
// txtCord.Textはコードを入力するテキストボックス
// txtName.Textは名称を入力するテキストボックス
dt.Rows[bm.Position].ItemArray[0] = txtCord.Text;
dt.Rows[bm.Position].ItemArray[1] = txtName.Text;
// bsはBindingSourceオブジェクト
bs.DataSource = dt;
dgv.DataSource = bs;

そこでデバッグで
dt.Rows[bm.Position].ItemArray[0] = txtCord.Text;
dt.Rows[bm.Position].ItemArray[1] = txtName.Text;
を通過した直後、値を確認しても内容が変わりません。

いろいろ調べてみましたがお手上げ状態ですので、どなたかおわかりになる方
教えて下さい。
お手数ですがよろしくお願い致します。

0
引用返信 編集キー/
■7431 / inTopicNo.2)  Re[1]: DataTableの更新
□投稿者/ ぽぴ王子 軍曹(63回)-(2006/10/11(Wed) 15:44:14)
ぽぴ王子 さんの Web サイト

分類:[C#] 

No7429に返信(くし&しもさんの記事)

> dt.Rows[bm.Position].ItemArray[0] = txtCord.Text;
> dt.Rows[bm.Position].ItemArray[1] = txtName.Text;

これだと、ItemArray として『取り出した配列』の内容を書き換えているだけに
なるので、Rows の内容は変わりません。

DataRow.ItemArray プロパティ以外に別のものが必要になります。
まずは MSDN で DataRow のメンバを細かく調べてみてはどうでしょうか。

あとは視点を変えてみることも忘れずに。


0
引用返信 編集キー/
■7433 / inTopicNo.3)  Re[2]: DataTableの更新
□投稿者/ くし&しも 二等兵(2回)-(2006/10/11(Wed) 16:36:51)

分類:[C#] 

No7431に返信(ぽぴ王子さんの記事)
ぽぴ王子さんありがとうございました。

MSDN で DataRowのメンバを調べてみた結果わかりました。

dt.Rows[dgv.CurrentCell.RowIndex][0] = txtCord.Text;
dt.Rows[dgv.CurrentCell.RowIndex][1] = txtName.Text;

としたら、DataTableの中身も変わりDataGridViewの内容も変わりました。

いろいろとヒントをありがとうございました。


解決済み
引用返信 編集キー/
■7434 / inTopicNo.4)  Re[3]: DataTableの更新
□投稿者/ trapemiya 曹長(98回)-(2006/10/11(Wed) 16:39:42)
trapemiya さんの Web サイト

分類:[C#] 

もし、ItemArrayのままいくのでしたら、LoadDataRowを使うことになります。
が、その必要はないですね。(^^;

解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -