2011-04-07 89 views
0

當我將我的linq查詢綁定到datagridview的數據源時,我無法更改gridview中的任何單元格值。列只讀屬性會自動設置爲true,當我嘗試將其設置爲false時,它會給出以下例外: -DataGridView與LINQ綁定中的問題?

綁定到只讀字段的DataGridView列必須將ReadOnly設置爲True。 LINQ

這是我的代碼爲它

DataClasses1DataContext db = new DataClasses1DataContext(); 
var selectquery = from s in db.Sarees where s.Bill.BillNo == billno select new { s.BillID,s.Price }; 

我發現1個解決這個問題,如果有表中的許多列,我想只選擇其中兩個是不是骯髒的... 的1解決方法是: -

var selectquery = db.Sarees.Where(s => s.Bill.BillNo == billno); 

當我給這個查詢它工作正常.. 但我想一個解決方案,我可以通過LINQ只選擇某些列,並通過一個DataGridView綁定時,可以改變它的價值...

回答

2

問題是此查詢不返回Sarees的集合,因此無法像您想要的那樣對其進行編輯。它返回一個新對象集合,其中包含BillIDPrice屬性。

DataClasses1DataContext db = new DataClasses1DataContext(); 
var selectquery = from s in db.Sarees 
        where s.Bill.BillNo == billno 
        select new { s.BillID, s.Price }; 

你可以使用一個版本的第二個查詢並綁定唯一要編輯的DataGridView列?


您可能還需要探索使用DataGridView.CellFormatting Event

+0

如何使用第二個版本並僅綁定某些列(例如ID和Price)? – Marshal 2011-04-07 14:07:42

+0

這就是CellFormatting事件發揮作用的地方。即使如此,我不知道字段更改是否會自動更新。我不認爲這是爲了像OP所要求的那樣深度保存對象。 – hunter 2011-04-07 14:25:18