将DataGridView绑定到Object列表



我是新的数据绑定在。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);
    }
}
  1. 我不确定我绑东西的方式是否正确。我也想知道我是否可以在这里使用单个绑定列表,因为我将相同的列表绑定到相同的DataGridView!这可能吗?

  2. 在这种情况下,使用BindingSource和BindingList有什么区别?

在构造函数中将DataGridView绑定到演示者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);
    }
}

最新更新