我将自己绑定DataGridView
到我,ComboBox
以便无论在中选择什么值ComboBox
,SID和Mark的相应值都将出现在中DataGridView
。在DataGridView
我这样做的时候是可编辑的,但是当它是输入数据不保存在数据库中。有没有办法更新它?如果还有另一种方法,我首先必须警告说DataGridView
,如果我尝试将整个“ Student_Course”表绑定到DataGridView
其他不需要的列,则只需要SID和Mark即可。
private void cboeCID_SelectedIndexChanged_1(object sender, EventArgs e)
{
var CID = Convert.ToInt32(cboeCID.Text);
using (var db = new Entities2())
{
var course = from c in db.Student_Course
where c.CID == CID
select new Class1
{
SID = c.SID,
Mark = c.Mark
};
editDataGridView.DataSource = course.ToList();
Validate();
editDataGridView.EndEdit();
editDataGridView.Update();
}
}
class Class1
{
public int SID { get; set; }
public int Mark { get; set; }
}
上面的代码中有一些重要的问题:
您将查询的结果调整Class1
为不是您的实体类型的自定义。
您使用了DbContext
inusing
语句,这意味着db
将在using语句之后处理该语句,并且不会跟踪更改。
您调用SaveChanges
了另一个您DbContext
不知道更改的实例,因此没有任何反应。
要解决上述问题,请考虑以下技巧:
db
为的字段,Form
并在Load
发生时实例化它,Form
并将其用于加载和保存数据。您可以通过以下方式加载数据实体:
db = new Entities2();
db.Student_Course.Where(x => c.CID== CID).ToList();
editDataGridView.DataSource = db.Student_Course.Local;
您可以通过以下方式保存数据:
editDataGridView.EndEdit();
db.SaveChanges();
如果需要使用与实体不同的视图模型进行编辑,则在保存更改时,应首先使用上下文的另一个实例从数据库加载原始实体,然后为每个实体设置更改字段的值,然后调用SaveChanges
方法。
有关更多信息,请查看以下资源:
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句