C# 将DataGridView绑定到对象列表
我不熟悉.NET中的数据绑定,我想将我的DataGridView绑定到一个对象列表。此网格可以通过两种方式填充 表单中有文本框,用户可以输入文本,当他们按下“添加”按钮时,一个新对象将用提供的字段实例化,并添加到列表中 另一种方法是,当用户搜索对象时,匹配的对象从数据库加载到列表中。同样,在搜索之后,用户应该能够像第一种方法那样将新项目添加到此列表中 最后,这个列表绑定到DataGridView,现在用户可以对网格中显示的项目进行任何更改,如果可以的话,用户可以保存它们 因此,在我的演示者中,我有三种方法来满足上述要求C# 将DataGridView绑定到对象列表,c#,.net,winforms,data-binding,mvp,C#,.net,Winforms,Data Binding,Mvp,我不熟悉.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);
}
}
Class AttendancePresenter
{
私人出勤
{
AttendanceList.Add(attendanceModel);
var bindingList=新的bindingList(AttendanceList);
var source=新的BindingSource(bindingList,null);
_View.AttendanceGrid=源;
}
私人出勤()
{
AttendanceList=_DataService.getAttention();
var bindingList=新的bindingList(AttendanceList);
var source=新的BindingSource(bindingList,null);
_View.AttendanceInGrid=源;
}
私有void Save()
{
_DataService.InsertAttendance(AttendanceList);
}
}
将DataGridView绑定到构造函数右侧的presenters AttendanceList,假设您的视图在该点实例化。然后在演示者中执行以下操作:
Class AttendancePresenter
{
private readonly BindingList<IAttendance> _attendanceList;
public AttendancePresenter()
{
_attendanceList = new BindingList<IAttendance>();
_View.AttendanceGrid = _attendanceList;
}
private void AddAttendance()
{
_attendanceList.Add(attendanceModel);
}
private void GetAttendance()
{
_attendanceList.Clear();
var attendance = _DataService.GetAttendance();
foreach (var attendant in attendance)
{
_attendanceList.Add(attendant);
}
}
private void Save()
{
_DataService.InsertAttendance (_attendanceList);
}
}
Class AttendancePresenter
{
私有只读绑定列表_attendanceList;
公众出席人数中心()
{
_attendanceList=新绑定列表();
_View.AttendanceGrid=\u attendanceList;
}
私人出勤
{
_attendanceList.Add(attendanceModel);
}
私人出勤()
{
_出席者。清除();
var attention=_DataService.getAttention();
foreach(var值班员)
{
_attendanceList.Add(服务员);
}
}
私有void Save()
{
_DataService.InsertAttendance(_attendanceList);
}
}
Fwiw我使用的是旧的MVP框架,但我通常看到的是视图绑定到演示者,而不是演示者设置视图数据源。我的视图不知道演示者!我仍然没有实现那个保存部分。我的想法是使用考勤ID查看它是否存在。好的,没问题,更新了答案以适应这一点。实际上,我的DataService
返回一个列表
,要使用您的方法,DataService
应该返回一个绑定列表
不是吗?(我指的是GetAttention(){})我也找不到.AddRange()方法!抱歉,我正在使用记事本:)更新了答案-请尝试一下。您好,我在我的应用程序中实现了您的代码。但是现在我在foreach循环中得到一个错误,说。。。“System.ArgumentOutOfRangeException was nhandled Message=值'4'对'indexStart'无效。“indexStart'必须小于或等于0。”但在发生此异常之前,似乎所有项都已成功添加到绑定列表中。