私はこれに何日も苦労しており、DataTables と dataGridViews がすべて混同されています。
私は、DataGridView、dataGridView1、および DataTable のエラーを持つ WinForms プログラムを持っています。
public static DataTable errors = new DataTable();
dataGridView1.DataSource = errors;
さらに下にある ValidateText というメソッドで、テキスト ファイルから 1 行ずつデータを配列に読み取ります。また、エラー データテーブルの列も定義します。
errors.Columns.Add("Account Number");
errors.Columns.Add("Customer Name");
errors.Columns.Add("Country");
errors.Columns.Add("State");
errors.Columns.Add("Ship-to Country");
errors.Columns.Add("Ship-to State");
var lines = File.ReadAllLines(file);
foreach (string line in lines)
{.
.
.
string []items=line.Split('\t').ToArray();
errors.Rows.Add(items[0], items[1],...items[5]);
そして、それを実行するとうまくいきます。問題は、「国」列にコンボボックスを入れたいので、プログラムが実行され、データがdataGridView1に表示されると、ユーザーは新しい国を選択する機会があります。 「国」列から。プログラムのさらに下では、DataGridViewComboBoxColumn を作成するメソッドを実際に定義しました。
private DataGridViewComboBoxColumn CreateComboBoxColumn()
{
DataGridViewComboBoxColumn buildCountries = new DataGridViewComboBoxColumn();
buildCountries.HeaderText = "List of Countries";
DataTable dataTable = new DataTable();
dataTable.Columns.Add("Keys");
dataTable.Columns.Add("Values");
KeyValuePair<string, string>[] array = CountryList.ToArray();
foreach (KeyValuePair<string, string> kvp in array)
{
dataTable.Rows.Add(kvp.Key, kvp.Value);
}
buildCountries.DataSource = dataTable;
buildCountries.DisplayMember = "Values";
buildCountries.ValueMember = "Keys";
return buildCountries;
}
私が問題を抱えているのは、最後の方法で作成したコンボボックスを、上で作成した「国」列に入れるにはどうすればよいですか? DataGridView と DataTable で何かが得られていないように感じます。DataTable を DataGridView にバインドしますが、この DataGridViewComboBoxColumn を追加するのは難しいようです。
ありがとう、
アマンダ