【问题标题】:Locked DataGridView. Linq is a problem?锁定的 DataGridView。 linq有问题吗?
【发布时间】:2010-04-02 09:14:54
【问题描述】:

我从 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;

问题是,我无法更改复选框列的值。

我已启用 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();

            }

        }

【问题讨论】:

    标签: c# winforms linq datagridview


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多