我已经将一个组合框链接到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();
}
}
答案 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
是可编辑的..