C# 如何使用用户定义的对象列表填充Gridview组合框
在EF中,我有一个实体Stuff,我想用Stuff表中的所有内容填充Gridview组合框,代码如下:C# 如何使用用户定义的对象列表填充Gridview组合框,c#,entity-framework,C#,Entity Framework,在EF中,我有一个实体Stuff,我想用Stuff表中的所有内容填充Gridview组合框,代码如下: var stuffs = from t in Database.Context.Stuffs select t; return stuffs.ToList<Stuff>(); datagridview.datasource=stuffs; 但是得到这个错误: datagridview组合框单元格值无效错误是否尝试使组合框显示多列 您能发送组合框
var stuffs = from t in Database.Context.Stuffs
select t;
return stuffs.ToList<Stuff>();
datagridview.datasource=stuffs;
但是得到这个错误:
datagridview组合框单元格值无效错误是否尝试使组合框显示多列 您能发送组合框的xaml代码吗?如何绑定它
如果是这样,您可能需要绑定类属性上的每一列,而不是重写ToString()以返回字符串中的每个值。我不是说这是最好的方法,我不熟悉WinForms 但在这个示例中,它似乎确实想要您想要的:
类内容
{
公共字符串名称{get;set;}
公共字符串CieName{get;set;}
公共重写字符串ToString()
{
返回string.Format(“{0}-{1}”,名称,CieName);
}
}
公共部分类Form1:Form
{
私有列表_myList=新列表()
{
新东西(){Name=“Anne”,CieName=“Google”},
新东西(){Name=“Creg”,CieName=“Yahoo”}
};
公共表格1()
{
初始化组件();
BindComboxColumnDataSource();
}
私有void bindcomboxColumnDataSource()
{
var comboColumn=dataGridView1。列[“ComboBoxColumn”]作为DataGridViewComboxColumn;
if(comboColumn!=null)
comboColumn.DataSource=\u myList;
}
}
分配数据源后,数据绑定在何处?否,当我编写datagridviewcombobox.Datasource=list时,编译器会查找override ToString()对于在combobox中显示,您可能需要设置DisplayMemberPath和SelectedValueMemberPath属性,以告诉您的combobox哪一个是值以及您希望显示为项文本的内容我想在comboxbox中显示Name+“-”+Companyname,这在combobox中可以正常工作,但在datagridviewcombobox中不起作用
public override string ToString()
{
return this.Name + "-" + this.CompanyName;
}
class Stuff
{
public string Name { get; set; }
public string CieName { get; set; }
public override string ToString()
{
return string.Format("{0}-{1}", Name, CieName);
}
}
public partial class Form1 : Form
{
private List<Stuff> _myList = new List<Stuff>()
{
new Stuff() {Name = "Anne", CieName = "Google"},
new Stuff() {Name = "Creg", CieName = "Yahoo"}
};
public Form1()
{
InitializeComponent();
BindComboBoxColumnDataSource();
}
private void BindComboBoxColumnDataSource()
{
var comboColumn = dataGridView1.Columns["ComboBoxColumn"] as DataGridViewComboBoxColumn;
if (comboColumn != null)
comboColumn.DataSource = _myList;
}
}