c# - 在 Linq to Entities 中编辑 DataGridView 单元格

标签 c# linq datagridview

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

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

这是我在对第一个查询应用一些过滤后将数据绑定(bind)到 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(); 
 }

最佳答案

这很有趣,我没有意识到它对匿名类型做到了这一点。不过很容易重现。

最简单的事情可能是在表单内创建一个仅包含您需要的字段的私有(private)类,因为您不会在其他任何地方使用它。

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;

关于c# - 在 Linq to Entities 中编辑 DataGridView 单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24397280/

相关文章:

c# - 使用测试驱动开发实现堆栈

c# - 基于属性值创建动态 Linq 查询

c# - 读取 JSON 数据并循环遍历数据以根据条件获取特定值

c# - 在 c# linq 中转换为值类型 'System.Single' 失败

c# - readerwriterlock 允许在获取写锁时读取?

c# - 自定义控件中的双缓冲子控件(C#)

c# - 标记扩展 : Converting a simple property to DependencyProperty

c# - DataGridView 的输出显示字符数而不是字符串名称

winforms - DataGridView 在左侧显示多余的列 - 如何摆脱它?

c# - 当 DataGridView 具有焦点时,如何让 "Accept"按钮触发?