0

DataGridViewComboBoxColumn objectにバインドされている の列にをバインドしようとしてDataTableDataGridViewます。この列は別の に配置されDataGridViewます。これは、これが発生するコードのセクションです。

//Create material datatable
materialTable = new DataTable();
materialTable.Columns.Add("Material", typeof(string));

dataGridViewMaterials.DataSource = materialTable;

//Create material combobox column
materialColumn = new DataGridViewComboBoxColumn();
materialColumn.DataPropertyName = "Material";
materialColumn.Name = "Material";
materialColumn.DataSource = materialTable.Columns[0].Container;

materialTable.Columns[0].Container;materialTable がどのように取り込まれても null を返します。などの他の方法materialTable.Rows[0]["Material"].ToString()は期待どおりに機能します。どうすればこれを機能させることができますか?

4

2 に答える 2

0

Columns コレクションは、データテーブル (AKA スキーマ) の構成構造を表します。データは含まれていません。データを含むのは、DataTable 自体とその Rows コレクションです。あなたの場合、あなたは単に書くべきです

//Create material combobox column
materialColumn = new DataGridViewComboBoxColumn();
materialColumn.DataPropertyName = "Material";
materialColumn.Name = "Material";
materialColumn.DataSource = materialTable;

もちろん、コンボボックスに何かが表示される前に、DataTable にデータをロードする必要があります。
たとえば、追加できます

materialTable = new DataTable();
materialTable.Columns.Add("Material", typeof(string));
DataRow row = materialTable.NewRow();
row[0] = "First item";
materialTable.Rows.Add(row);

または、特定の Sql クラスを使用してデータをロードしますが、これは別の問題です

于 2013-08-07T21:03:49.197 に答える
0

ドキュメントを読む:

[BrowsableAttribute(false)]
public virtual IContainer Container { get; }

プロパティ値の型: System.ComponentModel.IContainer コンポーネントのコンテナーを表す IContainer インターフェイスを実装するオブジェクト、またはコンポーネントに site がない場合は null

これは、基本クラスから継承された仮想プロパティです。には意味がありませんDataTable。ほとんどの場合、使用したいプロパティではありません。

于 2013-08-07T20:57:53.710 に答える