博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
“BindingNavigator”如何在删除前弹出确认框?
阅读量:6720 次
发布时间:2019-06-25

本文共 1731 字,大约阅读时间需要 5 分钟。

问题的缘起在于有一个学习数据操作的人询问我“BindingNavigator”如何点击“删除”前进行确认。我一开始模拟创建了一个表,然后通过设计器的方式生成了这四类控件,随后拖拽一个Navigator到WinForm上,双击红色叉叉部分,写入一个MessageBox判断用户究竟是否需要取消——显然不起作用。

于是反推引发该Delete事件的方法必然是先调用了SQL相关语句删除了当前记录,然后引发了Delete事件,于是兴冲冲地查看BindingNavigator关于Delete的方法,希望可以重写——

[C#]

private void OnDelete(object sender, EventArgs e){    if (this.Validate() && (this.bindingSource != null))    {        this.bindingSource.RemoveCurrent();        this.RefreshItemsInternal();    }}

[VB.NET]

Private Sub OnDelete(ByVal sender As Object, ByVal e As EventArgs)    If (Me.Validate AndAlso (Not Me.bindingSource Is Nothing)) Then        Me.bindingSource.RemoveCurrent        Me.RefreshItemsInternal    End IfEnd Sub

Fuck(请抱歉我说粗话了)——这个方法竟然是私有的!

怎么办?也没有任何Deleting(进行时)的事件啥的……欲哭无泪的我无意发现这样一个属性:DeleteItem——这个控件如果设置为“空”(Null),那么完全就可以让你自己来编程啦!于是:

1)先设置DeleteItem为空,不让它调用自动生成的删除代码(因为我要自己编写逻辑滴!)

2)代码如下(这里MyData啥的全都是生成的强类型数据集):

[C#]

private void bindingNavigatorDeleteItem_Click(object sender, EventArgs e)        {            if (MessageBox.Show("确认删除吗?", "删除前确认", MessageBoxButtons.OKCancel) == DialogResult.OK)            {                myDbTestDataSet.myTable.Rows[bindingNavigator1.BindingSource.Position].Delete();            }        }

[VB.NET]

Private Sub bindingNavigatorDeleteItem_Click(sender As Object, e As EventArgs)    If MessageBox.Show("确认删除吗?", "删除前确认", MessageBoxButtons.OKCancel) = DialogResult.OK Then        myDbTestDataSet.myTable.Rows(bindingNavigator1.BindingSource.Position).Delete()    End IfEnd Sub

一般地,BindingNavigator上面全部的按钮——绑定到数据源的时候(假设生成了CRUD等方法),都有两大类运行模式:

1)自动,就是默认设置,无需做任何操作。
2)手动,像我设置一样——把XXXItem设置为“空”(Null),然后编码进行。此时的Navigator好比只是一个带有数据源的一个普通工具条,你完全可以自定义。

转载于:https://www.cnblogs.com/ServiceboyNew/archive/2012/12/01/2797429.html

你可能感兴趣的文章
Exsi服务故障
查看>>
电子商务思维导图精品荟萃:电子商务思维导图大全
查看>>
使用NS2模拟多媒体通讯与无线网络(一)
查看>>
Smart pointers
查看>>
关于rsync中/etc/rsync.password的权限故障:
查看>>
struts.xml配置详解
查看>>
IPSEC ***两个阶段的协商过程
查看>>
稻盛和夫自传读书笔记
查看>>
我的友情链接
查看>>
系统自带sysprep工具重置系统
查看>>
图书推荐:《世界上下五千年大全集》
查看>>
asp.net怎样在URL中使用中文、空格、特殊字符
查看>>
git命令
查看>>
Linux中Yum 出现 Temporary failure in name resolution 解决方案
查看>>
神州数码不同OSPF进程及区域间的通信 实例
查看>>
RHEL AS4下升级oracle10g到10.2.0.3
查看>>
图说:如何给Metro 开始屏幕图标分组
查看>>
HAProxy负载平衡集群
查看>>
junit4使用 (转http://blog.csdn.net/afeilxc/article/details/6218908 )
查看>>
电脑蓝屏--代码0x0000008E
查看>>