如何将DataGridView行索引传递给Presenter

时间:2014-06-28 19:16:42

标签: c# .net winforms mvp bindinglist

我在表单上有一个DataGridView,我已BindingList绑定Grid Presenter

public AttendancePresenter( IAttendance model, IAttendanceView view, IDataService dataService, IMessageService messageService ) : base(messageService)
{
    _BindingAttendanceList = new BindingList<IAttendance>();
    _View.AttendanceGrid = _BindingAttendanceList;
}

现在,当我按下Delete按钮时,我想从网格中删除所选行(并且应该在数据库上更新此更改)。我的问题是我应该如何通知Presenter我要删除网格中的这个特定行/项目?如果演示者知道它可以从BindingList中找到已删除的项目,并从数据库中删除相同的记录。 (在这方面可以使用ID字段AttendanceID字段)

注意:我的View不了解PresenterView只会根据用户操作触发事件。

private void btnDelete_Click(object sender, EventArgs e)
{
    OnDeleteAttendance(sender, e);
}

编辑:我的网格包含多个列,例如AttendanceIDEmployeeIDNameInDateTimeOutDateTime等。我在视图中使用公共属性从Presenter设置Grid

public BindingList<IAttendance> AttendanceGrid
{
    Set { dgvAttendance.DataSource = Value; };
}

1 个答案:

答案 0 :(得分:1)

如果我正确理解您基本上要问的是如何将要删除的项目的ID查看传递到演示者

有两种典型的方法可以做到:

  1. 查看界面中创建一个属性,用于获取要删除的项目的ID

    public int IdToDelete
    {
        get
        {
            // logic to get the id of the item you want to delete
        }
    }
    

    通过这种方式,您可以在Presenter中访问要删除的项目的ID。

  2. 另一种方法是扩展EventArgs类并添加另一个属性来存储项目的ID,但我认为传递单个值会有点过分。

    < / LI>