我试图将对象列表绑定为数据网格的数据源,列的组合应该是组合框,其中组合框的选定值应该是我对象中相关字段中的值 .
这是我如何设置gridview的数据源:
var s = new BindingSource();
s.DataSource = dbc.GetResults();
dataGridView.DataSource = s;
dbc.GetResults(id)将返回List和myClass
Class myClass
{
int productID{ set; get; }
int price{ set; get; }
}
然后我像这样初始化数据网格视图:
dataGridView.AutoGenerateColumns = false;
DataGridViewComboBoxColumn dgvc = new DataGridViewComboBoxColumn();
dgvc.HeaderText = "Products";
dgvc.DataSource = dbc.GetAllProducts();
dgvc.DisplayMember = "Name";
dgvc.ValueMember = "ID";
dataGridView.Columns.Add(dgvc);
dataGridView.Columns[0].DataPropertyName = "productID";
和dbc.GetAllProducts()返回列表和:
Class Products
{
int ID;
string Name;
}
在这里,我希望数据网格从myClass获取productID并将其传递给每一行上的组合框,然后组合框获取productID与产品列中的ID匹配,然后显示它的Name属性 .
当我运行这个时,我得到DataGridViewComboBoxCell值无效的错误 .
1 回答
您应该使用字典将属性绑定到组合:
使用产品对象填充字典并将其绑定到网格列上 .
在您的datagrid AutoGeneratingColumn事件中: