2010-04-02 20 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查詢中創建該對象。