【发布时间】:2010-03-19 16:11:47
【问题描述】:
我想在 DataGridView 中显示以下数据:
DataEntry[] data = new[]{
new DataEntry(){Name = "A", Entries = new []{ "1", "2"}},
new DataEntry(){Name = "B", Entries = new []{ "1", "2", "3"}}};
“名称”将是一个简单的文本框字段,“条目”将是一个组合框,其中可供选择的项目是列表中的元素。
所以在这个例子中会有 2 行(下面是 datagridview 的样子):
Name Entries
Row1 : A <choice of "1" or "2">
Row1 : B <choice of "1" or "2" or "3">
我的问题是,我如何绑定这些数据?!我查看了 DataPropertyName、DisplayMember 和 ValueMember 属性...但无法解决这个问题。
下面是当前的代码 - 带有注释,我需要在其中添加神奇的几行来为 Entries 列设置 DataSource 等。
public partial class Form1 : Form
{
DataEntry[] data = new[]{
new DataEntry(){Name = "A", Entries = new []{ "1", "2"}},
new DataEntry(){Name = "B", Entries = new []{ "1", "2", "3"}}};
public Form1()
{
InitializeComponent();
dataGridView1.AutoGenerateColumns = false;
var nameCol = new DataGridViewTextBoxColumn();
nameCol.DataPropertyName = "Name";
var entriesCol = new DataGridViewComboBoxColumn();
//entriesCol. ???? = "Entries"; !!
dataGridView1.Columns.AddRange(new DataGridViewColumn[] { nameCol, entriesCol });
dataGridView1.DataSource = data;
}
}
public class DataEntry
{
public string Name { get; set; }
public IEnumerable<string> Entries { get; set; }
}
【问题讨论】: