数据绑定linq查询到Entity Framework 5.0中的datagridView
我正在学习entity framework(5.0和VSExpress 2012),我在将查询绑定到WinForms中的dataGridView时遇到了麻烦。 我有以下代码,当我启动应用程序时它显示我的查询,但我不知道在更改底层数据库中的数据后我需要做什么来更新dataGridView。 这样做的最佳方法是什么? 我在这做错了什么?
private void Form1_Load(object sender, EventArgs e) { using( var ctx = new TimeKeepEntities()) { var qLoggedIn = from r in ctx.tblTimeRecords where (r.tblEmployee.Active && !r.ClockOut.HasValue) || System.Data.Objects.EntityFunctions.DiffDays(r.ClockOut, DateTime.Now)<30 select new { Name = r.tblEmployee.Last + ", " + r.tblEmployee.First, r.tblProject.ProjName, r.ClockIn, r.ClockOut }; dataGridView1.DataSource = qLoggedIn.ToList(); } }
Pho请注意他们使用的是winforms而不是asp.net。 根据MSDN,您可以执行以下操作:
BindingSource bindingSource1 = new BindingSource(); bindingSource1.DataSource = (from r in ctx.tblTimeRecords where (r.tblEmployee.Active && !r.ClockOut.HasValue) || System.Data.Objects.EntityFunctions.DiffDays(r.ClockOut, DateTime.Now)<30 select new { Name = r.tblEmployee.Last + ", " + r.tblEmployee.First, r.tblProject.ProjName, r.ClockIn, r.ClockOut }).ToList(); dataGridView1.DataSource = bindingSource1;
请参阅: msdn文档
您必须使用dataGridView1.DataBind();
绑定数据dataGridView1.DataBind();
:
... dataGridView1.DataSource = qLoggedIn.ToList(); dataGridView1.DataBind(); ...
.Net使用断开连接的模型。 从数据库中获取信息时,它是该时间点的快照。 如果更改基础数据存储中的数据,则除非您显式重新查询数据库并重新绑定UI,否则不会反映这些更改。
当您在UI中保存更改时,EF可以检查是否有其他人更改了您正在修改的行(针对并发问题),并让您知道是否存在潜在冲突。
上述就是C#学习教程:数据绑定linq查询到Entity Framework 5.0中的datagridView分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
IEnumerable query =( from p in orginalList.AsEnumerable() where p.Field("Category") == 2 select p).ToList(); DataTable boundTable = query.CopyToDataTable(); dataGridView1.AutoGenerateColumns = false; dataGridView1.DataSource = boundTable;
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/961486.html