winform中(当数据库的数据有变化时)datagridview 刷新的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了winform中(当数据库的数据有变化时)datagridview 刷新的问题相关的知识,希望对你有一定的参考价值。

B用户查询datagridview中显示人员信息,当A用户在同时登录这个程序而更改了某人员的信息时,B用户怎样也能在他当前查询界面不关闭的情况下看到更改的信息? 如果用timer控件,怎么判断数据变化了再刷新,而不是隔几秒窗体就闪一下。

参考技术A winform有一个特点,只要你将数据源变化了,datagridview自然就变化了。
你如果不想每隔几秒刷,我这有两个办法。
一,记录你每次修改每张表的时间。也就是你对这个表中的数据进行增删改操作,就在数据库里把这个表的更新时间记录一下。然后在打开这个窗体进行查询的时候,同时获得这个时间,剩下的,你在timer里去拿你查询时记录的这个时间去和表中记录的时间去比较,不一样了,就说明改变了,你就重新读一遍数据去刷新grid
二,如果你的SQL版本是2005及以上,可以利用SqlDependency来实现,关于这个类的具体用法你可以百度一下,我说一下功能,就是建立一个数据库依赖,当数据库表一旦发生变化时,会自动触发.net程序中的一个方法,在这个方法中你去重新获取数据,更新你的数据源。

vue如何在组件挂载完成之后在监听data中对象或属性的变化

       项目的需求是当用户修改页面上输入框当中的内容后就必须点击保存,否则不能点击发送,当用户没有修改输入框当中的内容时就可以直接点击发送,然后启动流程。

  我这里是用from表单去绑定所有输入框当,所以需要深度监听from的变化。代码如下:

data () {
      return {
        // 绑定f的orm数据
        preserveData: {
          reportNumber: 0,
          category: ‘‘,
          anonymous: false,
          reporterName: ‘‘,
          deptName: ‘‘,
          deptId: ‘‘,
          reporter: ‘‘
        },// 保存状态--是否修改了内容
        saveStatus: false,
        // 记录触发监听的次数
        whetherCount: 0
      }
    },
mounted () {
      // 监听from表单的变化,如果触发多次则必须保存
      this.$watch(‘preserveData‘, () => {
        this.whetherCount++
        // console.log(this.whetherCount)
        // 判断修改的次数,如果大于2的话将状态改为true,为1时是挂载的时候触发的
        if (this.whetherCount >= 2) {
          this.saveStatus = false
        } else if (this.whetherCount < 2) {
          this.saveStatus = true
        }
      }, {
        deep: true
      })
    }

  然后就直接根据saveStatus进行判断了,如果用户没有修改可以直接发送了,如果用户修了则需要先保存保存完成后才可以点击发送、

以上是关于winform中(当数据库的数据有变化时)datagridview 刷新的问题的主要内容,如果未能解决你的问题,请参考以下文章

winform Form 内控件焦点变化?

C#里winform最大化时,如何使里面的控件按比例变化

Vue计算属性和监听属性

winform中如何判断控件的内容已经修改?

c#winform 关于页面大小与控件大小的问题

在 Winform 中,为啥当我在一个数据源上调用 PropertyChanged 时所有绑定的属性都会更新?