- PR -

C# DataGridViewに値を自動入力する方法

1
投稿者投稿内容
ひろし
ぬし
会議室デビュー日: 2002/09/16
投稿数: 390
お住まい・勤務地: 兵庫県
投稿日時: 2007-02-13 17:13
DataGridViewである列に値をセットすると同一行の別の列に対応する値を自動入力するには
どうすれば良いでしょうか?

例えば
商品名と単価が対で格納されている配列が既に作成されているとします。

string[] prod = new string[3];
string[] price = new int [3];
prod[0] = "商品1";
price[0] = 100;
prod[1] = "商品2";
price[1] = 120;
prod[2] = "商品3";
price[2] = 200;

DataGridViewの商品名(列)のComboBoxをクリックすると"商品1","商品2","商品3"がリスト表示される。
(ComboBoxへのリストの表示方法については別スレで質問しました)

"商品1"を選択した場合は単価(列)に100円が自動入力される。
"商品2"を選択した場合は単価(列)に120円が自動入力される。
"商品3"を選択した場合は単価(列)に200円が自動入力される。

といったことをできるだけ楽な方法で実現したいのですが、どのような方法が考えられるでしょうか?
例えばリレーションを使えば良いのでしょうか?
DataGridViewは単一のDdtaTableとBindされています。
KI
大ベテラン
会議室デビュー日: 2007/01/10
投稿数: 239
投稿日時: 2007-02-13 18:19
DataTableとバインドしているとのことですが、ComboBoxの列はデータベースに更新するのでしょうか?
更新するとしたらどういう値で更新するのでしょう?
コンボボックスの中身の値も、元はDBから読み込んだ値なのでしょうか?
おっしゃっている動きを実現する方法なら何通りかありそうですが
データベースへの更新も考慮すると、最適な方法というのは絞られてくると思います。
ひろし
ぬし
会議室デビュー日: 2002/09/16
投稿数: 390
お住まい・勤務地: 兵庫県
投稿日時: 2007-02-13 23:49
DataTable(あるいはDataSet)はスタンドアロンでのみ使用します。
処理を行う前にXMLファイルからReadXMLで読み込み、
DataTableと関連付けられたDataGridViewで編集した後、
永続化するためにXMLファイルにWriteXMLで書き込みます。
データ件数も100件程度なので全てメモリ上で操作できる量です。
宜しくお願いします。
KI
大ベテラン
会議室デビュー日: 2007/01/10
投稿数: 239
投稿日時: 2007-02-14 00:55
すみません。聞き方がまずかったですね。
DataTableをどう使うにせよ、DataGridViewにバインドしているのですから、
DataGridViewでDataTableの内容を編集するのが目的なのですよね。
そのDataGridViewの「商品名」列に対応するDataTableの列があり、
そこに選択された値が格納されるのかなと思ったので、
何を格納されるのかが気になったのです。
例えば「商品1」を選択したときに、DataTableの対応する列に
「商品1」という文字列が入るのか、コード値のようなものが入るのか
その辺りが気になりました。
それによって、DataGridViewComboBoxCellのDataSource, DisplayMember, ValueMemberの
設定が変わってきますので。

いずれにせよ、別のセルの値を連動して変更させるには、
DataGirdViewComboBoxEditingControlのSelectedIndexChangedイベントで
セルの値を設定するのが一般的だと思います。

こちらのサンプルを参考にしてみてください。

http://msdn2.microsoft.com/ja-jp/library/system.windows.forms.datagridviewcomboboxeditingcontrol(VS.80).aspx

最初に記述した、「DataTableの対応列をどういう値で更新するか」によって
コンボボックスのDataSourceも変わりますし、
イベントハンドラ内の処理内容も変わってきます。

個人的にはprod, priceのようなデータの持ち方よりは、
商品名と価格の2つの要素を持った構造体の配列とかにするほうが、
インデックスがずれる心配をしなくていいので良いと思いますが…
ひろし
ぬし
会議室デビュー日: 2002/09/16
投稿数: 390
お住まい・勤務地: 兵庫県
投稿日時: 2007-02-17 16:47
ご回答ありがとうございます。
ご指摘の方法でうまくいきました。
1

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