在Linq to Entities中编辑DataGridView单元格

时间:2014-06-24 22:18:43

标签: c# linq datagridview

当我使用Linq-to-Entities将数据库中的数据绑定到C#应用程序中的DataGridView时,我正在使DataGridView变为只读,无法编辑。

是否可以编辑DataGridView中的数据以及保存在数据库中的更改?

这是在对第一个查询应用一些过滤后将数据绑定到DGV的代码:

private void ViewResults(IQueryable<Hero> viewResult)
{
     dgdResult.DataSource = (from r in viewResult
                             select new
                             {
                                 Name   = r.Name,
                                 Rarity = r.Rarity,
                                 Speed  = r.Speed,
                                 Attack = r.Attack,
                                 Target = r.Target
                              }).ToList(); 
 }

1 个答案:

答案 0 :(得分:2)

这很有意思,我没有意识到它是用匿名类型做到的。虽然很容易重现。

最简单的事情可能就是在Form中创建一个只包含你需要的字段的私有类,因为你不会在其他任何地方使用它。

public partial class Form1 : Form
{
    ...
    ...

    private void ViewResults(IQueryable<Hero> viewResult)
    {
        dgdResult.DataSource = (from r in viewResult
                                select new LittleHero
                                           {
                                               Name = r.Name,
                                               Rarity = r.Rarity,
                                               Speed = r.Speed,
                                               Attack = r.Attack,
                                               Target = r.Target
                                           }).ToList();
    }

    private class LittleHero
    {
        public string Name { get; set; }
        public string Rarity { get; set; }
        public string Speed { get; set; }
        public string Attack { get; set; }
        public string Target { get; set; }
    }
}

至于保存它,这有点广泛,取决于你正在使用的技术。

通过强制转换DataSource,您可以轻松地从DataGridView获取集合。

var heroes = (List<LittleHero>)dgdResult.DataSource;