• “BindingNavigator”如何在删除前弹出确认框?


    问题的缘起在于有一个学习数据操作的人询问我“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 If
    End 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 If
    End Sub

    一般地,BindingNavigator上面全部的按钮——绑定到数据源的时候(假设生成了CRUD等方法),都有两大类运行模式:
    1)自动,就是默认设置,无需做任何操作。
    2)手动,像我设置一样——把XXXItem设置为“空”(Null),然后编码进行。此时的Navigator好比只是一个带有数据源的一个普通工具条,你完全可以自定义。

  • 相关阅读:
    【EF6学习笔记】(四)弹性连接及命令拦截调试
    【EF6学习笔记】(三)排序、过滤查询及分页
    【EF6学习笔记】(二)操练 CRUD 增删改查
    【EF6学习笔记】(一)Code First 方式生成数据库及初始化数据库实际操作
    SQL Server表分区
    【工具类】
    【C#加深理解系列】(二)序列化
    【ASP.NET Core分布式项目实战】(三)整理IdentityServer4 MVC授权、Consent功能实现
    【转载】IdentityServer4 使用OpenID Connect添加用户身份验证
    【ASP.NET Core分布式项目实战】(二)oauth2 + oidc 实现 server部分
  • 原文地址:https://www.cnblogs.com/ServiceboyNew/p/2797429.html
Copyright © 2020-2023  润新知