Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用用户定义的对象列表填充Gridview组合框_C#_Entity Framework - Fatal编程技术网

C# 如何使用用户定义的对象列表填充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组合框单元格值无效错误是否尝试使组合框显示多列 您能发送组合框

在EF中,我有一个实体Stuff,我想用Stuff表中的所有内容填充Gridview组合框,代码如下:

 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;
        }
    }