我在C#Windows窗体应用程序中使用Linq to SQL进行数据库操作。当用户对数据库进行任何更新时,我正在尝试更新ListView数据。我已尝试使用listView.BeginUpdate()
,listView.Refresh()
,listView.EndUpdate()
方法获取更新,但ListView更新的数据现在显示在ListView中。当我重新启动应用程序时,它会显示该数据。我尝试调试,数据库在我调用refreshListView()
之前获得更新,但Linq查询具有较旧的数据。为什么Linq查询显示旧数据?
这是代码。
studentViewLv.Clear();
studentViewLv.BeginUpdate();
var query = from c in context.StuBasics select c;
studentViewLv.Columns.Add("Ser No", 50);
studentViewLv.Columns.Add("Student Name ", 200);
studentViewLv.Columns.Add("Father's Name", 150);
studentViewLv.Columns.Add("Registration No", 150);
studentViewLv.Columns.Add("Class", 100);
studentViewLv.FullRowSelect = true;
int i = 1;
foreach (var c in query)
{
string[] stu = new string[] { i.ToString(), c.firstName + " " + c.lastName, c.fatherName, c.registrationNo, c.currentClass };
ListViewItem item = new ListViewItem(stu);
studentViewLv.Items.Add(item);
i++;
}
studentViewLv.Refresh();
studentViewLv.Update();
studentViewLv.EndUpdate();
答案 0 :(得分:1)
从评论中复制以澄清答案:
调用方法时,context.StuBasics
是否从数据库更新了?您需要确保更新此变量中的数据。
如果仅在加载应用程序时填充context.StuBasics
,则此处发出问题。每次使用DB执行操作时,都需要确保调用它的更新。由于样本中的LINQ非常精细,并且alays从context.StuBasics