我几天都在努力解决这个问题,而且我将DataTables和dataGridViews混淆了。
我有一个WinForms程序,它有一个DataGridView,dataGridView1和一个DataTable错误。
public static DataTable errors = new DataTable();
dataGridView1.DataSource = errors;
现在,再往下,在一个名为ValidateText的方法中,我将文本文件中的数据逐行读取到数组中,其中我还定义了数据表错误的列:
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]);
当我运行它时,它运行得很好。问题是,我想让“Country”列中有一个组合框,所以当程序运行,数据显示在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;
}
我遇到问题的是,如何将我在最后一种方法中创建的组合框导入上面创建的“Countries”列?我觉得我没有得到DataGridView和DataTable的东西。您将DataTable绑定到DataGridView,但添加此DataGridViewComboBoxColumn似乎很难。
谢谢,
阿曼达
答案 0 :(得分:1)
这只是我的建议,.NET Framework已经有了一个国家列表。所以你可以使用这个课程。我忘了谁创建了这段代码:)
public static class CountryEntries
{
public static IEnumerable<Country> GetCountries()
{
return from ri in
from ci in CultureInfo.GetCultures(CultureTypes.SpecificCultures)
select new RegionInfo(ci.LCID)
orderby ri.DisplayName
group ri by ri.TwoLetterISORegionName into g
select new Country
{
CountryId = g.Key,
Title = g.First().DisplayName
};
}
public class Country
{
public string CountryId { get; set; }
public string Title { get; set; }
}
}