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

时间:2016-08-11 13:51:42

标签: c# entity-framework linq datagridview

我已经将一个组合框链接到datagridview并且它工作得很好。但是,我需要使datagridview可编辑,但我无法在datagridview中输入任何内容。 ReadOnly是关闭/错误。我曾尝试在datagridview的值时使用cellvaluechanged事件,但首先我需要让单元格进行更改。如何通过linq to entity?使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"); 
}

这是我链接组合框和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();
       }
 }

1 个答案:

答案 0 :(得分:2)

找到here:问题在于您选择的anonymous type

  

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

因此,只读只会被转移到结果集中,然后转移到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();

..和voilà:DataGridView是可编辑的..