2010-04-02 57 views
0

我从web服务获取集合:锁定的DataGridView。 Linq是个问题?

var allPlaceHolders = 
    from ph in new MyService().GetPlaceHolders() 
    select new { Code = ph.Code, Name = ph.Name, Related = false }; 

dgPlaceHoldersAdd.DataSource = allPlaceHolders.ToList(); 

Designer.cs:

this.dgPlaceHoldersAdd.ColumnHeadersHeightSizeMode = 
    System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; 
this.dgPlaceHoldersAdd.Location = new System.Drawing.Point(3, 54); 
this.dgPlaceHoldersAdd.Name = "dgPlaceHoldersAdd"; 
this.dgPlaceHoldersAdd.RowHeadersVisible = false; 
this.dgPlaceHoldersAdd.Size = new System.Drawing.Size(286, 151); 
this.dgPlaceHoldersAdd.TabIndex = 15; 

的问题是,我不能改变复选框列的值。

我已使AutoGeneratedColumns(在datagridview的启动时没有任何列)

新增:

这工作好笑: 首先点击ID不改变复选框列的值。 第二次工作,然后开始正常工作。

可是......当我在另一行,然后单击更改之前排他的价值观

它是这样工作的单选按钮...

private void dgPlaceHoldersAdd_CellMouseUp(object sender, DataGridViewCellMouseEventArgs e) 
     { 


      if (e.ColumnIndex == 2 && e.RowIndex > -1) 
      { 
       dgPlaceHoldersAdd.ReadOnly = false; 
       dgPlaceHoldersAdd.CurrentRow.Cells[2].ReadOnly = false; 

       //dgPlaceHoldersAdd.EndEdit(); 

      } 

     } 

回答

3

你创建你的LINQ查询一个匿名对象。封面后面生成的C#类是不可变的(=只读)。这意味着您的DataGridView无法更改其值。

尝试创建一个可变的自定义对象,并在您的LINQ查询中创建该对象。