.NET DataBinding,从列表中删除项目之前的确认

时间:2009-11-11 22:08:05

标签: data-binding datagridview bindinglist

我有一个BindingList作为数据源和一个网格控件, 如果用户删除了网格中的一行,我希望他得到一个确认(例如一个消息框),

我正在使用的网格控件(我猜其中大部分都是),调用RemoveAt(int index),Collection方法 它具有void返回值,即使我将从bindingList继承,覆盖该方法或为它(和其他)提供新的实现,它也无济于事,因为网格无法知道用户选择取消操作...

有没有办法解决问题只使用数据绑定和库存绑定列表,网格控件?

我做的解决方法是: 一个。继承形式BindingList,实现ICancellableRemoving(包含单个“bool RemoveItem(对象项)”)。 湾从网格继承,覆盖它的remove方法(或类似),检查数据源是否实现了ICancellableRemoving,如果是,则调用方法,检查结果并相应地取消/继续操作。

P.S 我实现了一个接口,因为BindingList中唯一具有bool返回值的“Remove *”方法是Collection的Remove(T Item),它是通用的......网格不是;)

提前致谢, 埃里克。

2 个答案:

答案 0 :(得分:1)

附加到OnRowDeleting()

答案 1 :(得分:0)

这是WinForms吗?如果是这样,WinForms中的DataGridView控件有一个可以调用的UserDeletingRow()事件。例如:

// wire up the event
myGrid.UserDeletingRow += new DataGridViewRowCancelEventHandler(myGrid_UserDeletingRow);

// event handler
private void myGrid_UserDeletingRow(object sender, DataGridViewRowCancelEventArgs e)
{
    DialogResult result = MessageBox.Show("Are you sure you wish to delete this row?", "Are you sure?", MessageBoxButtons.YesNo, MessageBoxIcon.Question);

    if (result == DialogResult.No)
        e.Cancel = true;
}