我正在尝试将组合框添加到datagridview并将组合与数据和值绑定。这就是我正在做的事情,最终我遇到了很多例外。我做错了什么?
IList<string> houseNums= myTable.Select(x => house_num).ToList();
dealersGridView.Columns.Clear();
dealersGridView.DataSource = myTable;
dealersGridView.Columns["id"].DisplayIndex = 1;
dealersGridView.Columns["id"].HeaderText = "Field 1";
dealersGridView.Columns["name"].DisplayIndex = 2;
dealersGridView.Columns["name"].HeaderText = "Field 1";
dealersGridView.Columns.Remove("house_num");
DataGridViewComboBoxColumn column = new DataGridViewComboBoxColumn();
column.Items.AddRange(new object[] { 1, 2, 3, 4, 5, 6, 7 });
column.DisplayIndex = 8;
column.HeaderText = "MyHeader";
column.DataSource = houseNums;
dealersGridView.Columns.Add(column);
组合数据没有绑定,我看不到所选的值。有什么问题?..
答案 0 :(得分:2)
我认为您的一个问题是您正在为Items集合添加值:
column.Items.AddRange(new object[] { 1, 2, 3, 4, 5, 6, 7 });
然后再次设置DataSource
属性
column.DataSource = houseNums;
你需要做一个或另一个而不是两个。
foreach (string e in houseNums) column.Items.Add(e);
或:
column.DataSource = myTable.Select(x => house_num).ToList();
Here's an article以及从List<T>
填充DataGridViewComboBoxColumn的示例。
还有一件事。我注意到你正在从表中选择一个列表。我假设这是一个数据库表。您可以将该表中的特定字段绑定到DataSource属性。