【发布时间】:2014-08-18 21:19:51
【问题描述】:
我是 .NET 中数据绑定的新手,我想将我的 DataGridView 绑定到一个对象列表。该网格可能以两种方式填充。
表单中有文本框,用户可以输入文本,当他们按下添加按钮时,将使用提供的字段实例化一个新对象并将其添加到列表中。
另一种方式是,当用户搜索对象时,匹配的对象会从数据库加载到列表中。此外,在搜索后,用户应该能够像第一种方法一样将新项目添加到此列表中。
最后这个列表绑定到 DataGridView,现在用户可以对网格中显示的项目进行任何更改,如果没问题,用户可以保存它们。
所以在我的演示者中,我有三种方法可以满足上述要求。
Class AttendancePresenter
{
private void AddAttendance()
{
AttendanceList.Add(attendanceModel);
var bindingList = new BindingList<IAttendance>(AttendanceList);
var source = new BindingSource(bindingList, null);
_View.AttendanceGrid = source;
}
private void GetAttendance()
{
AttendanceList = _DataService.GetAttendance();
var bindingList = new BindingList<IAttendance>(AttendanceList);
var source = new BindingSource(bindingList, null);
_View.AttendanceInGrid = source;
}
private void Save()
{
_DataService.InsertAttendance (AttendanceList);
}
}
我不确定我绑定东西的方式是否正确。而且我想知道我是否可以在这里使用单个绑定列表,因为我将同一个列表绑定到同一个 DataGridView!有可能吗?
在这种情况下,将 BindingSource 与 BindingList 一起使用有什么区别?
【问题讨论】:
-
Fwiw 我使用的是较旧的 MVP 框架,但我通常看到的是 View 绑定到 Presenter,而不是 Presenter 设置视图数据源。
标签: c# .net winforms data-binding mvp