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

わんくま同盟

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

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


(過去ログ 37 を表示中)
■19048 / )  DataGridDiewのセルをコンボボックスとする
□投稿者/ KGM (1回)-(2008/05/19(Mon) 17:06:17)

分類:[C#] 

調べても同様の現象が見当たらなかったので
どうかご教授いただければと思います。

さて、その問題ですが

DataGridViewに何列か作ったうちの一つをコンボボックス(DataGridViewComboBoxColumn)にしたいと思っているのですが、

DataPropertyNameプロパティにテーブルの項目名を指定すると以下のエラーが出てしまいます。

---------------------------------------
DataGridViewで次の例外が発生しました

System.Format.Exception: DataGridComboBoxCellの値が有効ではありません

この規定のダアイログを置き換えるには、DataErrorイベントをハンドルしてください。
---------------------------------------

試行錯誤の末、
DataPropertyNameプロパティに列の名称(NAMEプロパティ)を指定することで
コンボボックスは使用できるようにはなりましたが、
別の項目に移動した途端値がnullになってしまうので結局意味がありませんでした。


参考までに、コードも載せておきます。

DataTable MntTable = new DataTable("MonthTable");
MntTable.Columns.Add("Disp", typeof(string));
MntTable.Columns.Add("Val", typeof(int));

MntTable.Rows.Add(" ", DBNull.Value);
MntTable.Rows.Add("あ", 1);
MntTable.Rows.Add("い", 2);
MntTable.Rows.Add("う", 3);

DataGridViewComboBoxColumn column = new DataGridViewComboBoxColumn();

column.DataPropertyName = "数値";

column.DataSource = MntTable;
column.ValueMember = "Val";
column.DisplayMember = "Disp";

column.HeaderText = "コンボ数値";
column.Name = "TCol_COM数値";

this.dgvTEST.Columns.Insert(1, column);


よろしくお願いいたします。

返信 編集キー/


管理者用

- Child Tree -