2011-04-07 88 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