【问题标题】:How to load the table in DataGrid Control?如何在 DataGrid 控件中加载表格?
【发布时间】:2012-06-29 11:31:16
【问题描述】:

当我尝试将表格加载到 DataGrid 控件时,它显示以下错误

无法将类型“TRAINING.Employee”隐式转换为 'System.Collections.IEnumerable'。存在显式转换(是 你错过了一个演员?)。

在我写的代码下面

MyDatatBaseDataContext MyDB = new MyDatatBaseDataContext();
Employee Add = new Employee();
Add.EmpID = 5039;
Add.Age = 25;
Add.Address = "West Street";
MyDB.Employees.InsertOnSubmit(Add);
MyDB.SubmitChanges();

grd_1.ItemsSource =Add;

【问题讨论】:

  • 网格的数据源应该像列表一样实现 IEnumerable

标签: c# wpf linq-to-sql


【解决方案1】:

ItemsSource 属性必须是某种类型的 IEnumerable

因此,如果您将代码的结尾更改为 ...

IEnumerable<Employee> adds = new [] { Add };
grd_1.ItemsSource = adds;

这可能会有所帮助,但您是否真的想使用网格来显示一名员工,并为每个属性使用一列?您真的想要每个属性的名称值对网格吗?

【讨论】:

    【解决方案2】:

    我认为您应该将网格绑定到员工列表,如下所示:

    List<Employee> lst = new List<Employee>();
    Emplyee emp1 = new Employee();
    lst.Add(emp1);
    grid.ItemsSource = lst;
    

    【讨论】:

      【解决方案3】:

      可能你只需要设置

      grd_1.ItemsSource = MyDB.Employees;
      

      因为您的 Table&lt;TEntity&gt; 员工是 IEnumerable。我不确定添加的项目是否会立即显示,但我认为最迟会在 SubmitChanges 之后显示。

      【讨论】:

        猜你喜欢
        • 2021-11-25
        • 2016-06-27
        • 1970-01-01
        • 2011-01-06
        • 1970-01-01
        • 2013-04-03
        • 2017-04-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多