gpt4 book ai didi

c# - 将 DataGridView 绑定(bind)到对象列表

转载 作者:太空宇宙 更新时间:2023-11-03 10:43:20 26 4
gpt4 key购买 nike

我是 .NET 中数据绑定(bind)的新手,我想将我的 DataGridView 绑定(bind)到一个对象列表。该网格可以以两种方式填充。

表单中有文本框,用户可以输入文本,当他们按下“添加”按钮时,一个新对象将使用提供的字段实例化,并将其添加到列表中。

另一种方式是,当用户搜索对象时,匹配的对象从数据库加载到列表中。同样在搜索之后,用户应该能够像第一种方法一样将新项目添加到这个列表中。

最后这个列表绑定(bind)到 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. 我不确定我绑定(bind)事物的方式是否正确。而且我想知道我是否可以在这里使用单个绑定(bind)列表,因为我将相同的列表绑定(bind)到相同的 DataGridView!可能吗?

  2. 在这种情况下,将 BindingSource 与 BindingList 一起使用有什么区别?

最佳答案

在构造函数中将 DataGridView 绑定(bind)到演示者 AttendanceList,假设此时已实例化您的 View 。然后在演示者中做这样的事情:

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);
}
}

关于c# - 将 DataGridView 绑定(bind)到对象列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24457330/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com