刷新绑定数据源、上下文和控件的正确方法
Proper way to refresh BindingDataSource, Context and Controls
这个问题听起来可能微不足道,但我还是会问的。给出下面的代码,强制 ListBox
反映新的 table 内容的正确方法是什么。
SQLDataContext dataContext = new SQLDataContext();
BindingDataSource myBindingDataSource = dataContext.MyTable1;
listBox1.DataSource = myBindingDataSource;
listBox1.DispalyMember = "Column1";
listBox.ValueMember = "Column2";
MyTable1 newRecord = new MyTable1();
newRecord.Column1 = "Some data";
newRecord.Column2 = 123;
dataContext.MyTable1.InsertOnSubmit(newRecord);
dataContext.SubmitChanges();
如果您愿意,强制 listBox1
反映 dataContext
更改的最有效方法或最佳实践是什么?
请不要生气,但这是滥用集合的典型示例。您正在使用 2 个平行的集合,除非它们正确链接,否则您不能指望一个集合彼此了解很多。由于您将 listBox1
绑定到 BindingDataSource
,因此您应该对相同的 BindingDataSource
执行添加、删除和更新操作。它绑定了两种方式。您在其中添加、更新或删除的所有内容都将反映在绑定控件和上下文中。只需提交上下文更改,您就会更新数据库。在您的示例中,您绕过 BindingDataSource
并直接写入上下文,因此“BindingDataSource”不知道更改。
这个问题听起来可能微不足道,但我还是会问的。给出下面的代码,强制 ListBox
反映新的 table 内容的正确方法是什么。
SQLDataContext dataContext = new SQLDataContext();
BindingDataSource myBindingDataSource = dataContext.MyTable1;
listBox1.DataSource = myBindingDataSource;
listBox1.DispalyMember = "Column1";
listBox.ValueMember = "Column2";
MyTable1 newRecord = new MyTable1();
newRecord.Column1 = "Some data";
newRecord.Column2 = 123;
dataContext.MyTable1.InsertOnSubmit(newRecord);
dataContext.SubmitChanges();
如果您愿意,强制 listBox1
反映 dataContext
更改的最有效方法或最佳实践是什么?
请不要生气,但这是滥用集合的典型示例。您正在使用 2 个平行的集合,除非它们正确链接,否则您不能指望一个集合彼此了解很多。由于您将 listBox1
绑定到 BindingDataSource
,因此您应该对相同的 BindingDataSource
执行添加、删除和更新操作。它绑定了两种方式。您在其中添加、更新或删除的所有内容都将反映在绑定控件和上下文中。只需提交上下文更改,您就会更新数据库。在您的示例中,您绕过 BindingDataSource
并直接写入上下文,因此“BindingDataSource”不知道更改。