【问题标题】:Edit DataGrid when select new is used in LINQ在 LINQ 中使用 select new 时编辑 DataGrid
【发布时间】:2015-11-22 10:59:47
【问题描述】:

问题是,当我使用“选择新”状态时,我不再被允许在 DataGrid 中编辑信息并将更改提交到 sql server。

dataGrid2.ItemsSource = from a in dc.Provider from c in dc.ProviderItems 
                        where a.Name == comboBox.SelectedItem.ToString() 
                        from b in dc.Category 
                        where b.CategoryID == c.CategoryID 
                        where c.ProviderID == a.ProviderID 
                        select new { 
                                     Name = c.Name, 
                                     Price = c.ProviderPrice, 
                                     Category = b.Name 
                                   };

【问题讨论】:

  • 我已经检查过了。例如,当我使用“select a;”而不是“select new...”时,一切正常。我读到这是因为 select new 创建了某种与原始表无关的虚拟表,这就是它不允许编辑的原因。
  • 再读一遍。关于匿名类型的部分(和链接),因为这是new { ... } 正在制作的内容。

标签: c# wpf linq datagrid


【解决方案1】:

为什么不创建一个具有这 3 个属性(名称、价格、类别)的新类,而不是执行 select new {},而是执行以下操作:

select new MyNewClass
{ 
    Name = c.Name,
    Price = c.ProviderPrice, 
    Category = b.Name
};

【讨论】:

  • 现在我可以编辑 DataGrid,但我无法提交更改。
  • 是的,我知道,但我认为您应该使用这种方法创建您的 UI 模型,然后创建自定义存储库以将更改推送到您的数据库。
  • @Unholyan 告诉我你是否需要更多帮助,我会告诉你自己的处理方法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多