2014-06-24 41 views
1

當我使用Linq-to-Entities將數據庫中的數據綁定到C#應用程序中的DataGridView時,我使DataGridView變爲只讀並且無法編輯。將Linq中的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(); 
} 
+0

即使你雙擊或三擊單元格,你不能編輯它?你確定'DataGridView.ReadOnly'屬性沒有設置爲'True'? –

+0

是的。我讀過它與匿名類型有關,但我不確定。 – Tima

回答

2

這很有意思,我不知道它確實與匿名類型。雖然很容易重現。

最簡單的事情可能是創建一個私有類,只需填寫表單中的所需字段,因爲您不會在其他地方使用它。

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; 
+0

這證實了它,匿名類型將使GridView不可編輯。感謝你的回答。 – Tima

相關問題