C# 在编辑datagridview时遇到困难。如何使其可编辑?

C# 在编辑datagridview时遇到困难。如何使其可编辑?,c#,entity-framework,linq,datagridview,C#,Entity Framework,Linq,Datagridview,我已经将一个组合框链接到datagridview,它工作得非常好。但是,我需要使datagridview可编辑,但我不能在datagridview中输入任何内容ReadOnly为off/false。当datagridview的值更改时,我尝试使用cellvaluechanged事件,但首先我需要更改单元格。如何通过linq to实体使datagridview可编辑 private void editDataGridView_CellContentClick_1(object sender, Da

我已经将一个组合框链接到datagridview,它工作得非常好。但是,我需要使datagridview可编辑,但我不能在datagridview中输入任何内容ReadOnly为off/false。当datagridview的值更改时,我尝试使用cellvaluechanged事件,但首先我需要更改单元格。如何通过linq to实体使datagridview可编辑

private void editDataGridView_CellContentClick_1(object sender, DataGridViewCellEventArgs e)
{
    editDataGridView.CellValueChanged 
      += new DataGridViewCellEventHandler(editDataGridView_CellValueChanged);
}

private void editDataGridView_CellValueChanged(object sender, DataGridViewCellEventArgs e)
{ 
     MessageBox.Show("Cell Changed"); 
}
这是我链接combobox和datagridview的地方

private void cboeCID_SelectedIndexChanged_1(object sender, EventArgs e)
{
     var CID = Convert.ToInt32(cboeCID.Text);

     using (Entities2 db = new Entities2())
     {
         var course = from c in db.Student_Course where c.CID == CID select new {
               SID = c.SID,
                Mark = c.Mark};
                editDataGridView.DataSource = course.ToList();
       }
 }
发现:问题在于您正在选择的

匿名类型包含一个或多个公共只读属性

因此,只读将被带入结果集,然后进入DGV

您需要选择一个,即使它仅仅是用于此目的的虚拟类

class dummy
{
    public integer SID { get; set; }
    public integer Mark { get; set; }

    public dummy() { }
    public dummy(integer w, integer p) { SID = s;  Mark = m; }
}
插入您自己的数据类型!选择一个不那么平淡的名字;-)

现在,您可以更改选择..:

     var course = from c in db.Student_Course where c.CID == CID select new dummy
     {
         SID = c.SID,
         Mark = c.Mark
      };

     editDataGridView.DataSource = course.ToList();

…瞧:
DataGridView
是可编辑的。

代码片段不起作用了,是吗?@stuartd EditonKeystroke,但即使DataGridView的readonly属性设置为false,我也无法在单元格中键入。你不应该在每个cellcontentclick上添加另一个事件处理程序。set在表单构造函数上只有一次!您不应该使用MessageBox进行调试,因为它会影响焦点。。改用Console.WriteLine!尽管如此,我不知道为什么你不能在细胞中写字;您能否将数据源设置为null并测试更改是否重要?@TaW数据源。可能就是这样!有办法解决吗?编辑不会保存回数据库,我尝试使用db.SaveChanges()但不起作用;希德是主键吗?是否所有字段都不为空?在普通ADO中,它通常包括准备更新命令;这里我不知道。你能检查一下数据的状态吗保存数据的问题是另一个新问题(经过一些研究)。既然我不使用EF,你能告诉我结果类型是什么吗?(用光标悬停在它上面,intellisense就会知道!)是的,但变量是哪种类型<代码>EnumerablerRowCollection?它是一种接口类型