锁定的DataGridView。 Linq有问题吗?

时间:2010-04-02 09:14:55

标签: c# winforms linq datagridview

我从webservice获取了这个集合:

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;

问题是,我无法更改checkBox列的值。

我启用了AutoGeneratedColumns(在启动时的datagridview中没有任何列)

增加:

这很有趣: 首先,单击id不会更改复选框列的值。 在第二项工作,然后开始工作正常。

但是......当我点击另一行然后在更改他的值之前排行

它像radiobutton一样......

 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();

            }

        }

1 个答案:

答案 0 :(得分:3)

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

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