如何在数据库发生更改时自动更新gridview而不使用计时器控件

时间:2011-04-07 10:10:38

标签: c# asp.net

如果数据库表发生更改,如何在不使用计时器控制的情况下自动更新gridview。

如果有人无法提出我的问题,请让我发表评论。

提前致谢

4 个答案:

答案 0 :(得分:0)

实际上当应用程序需要它查询数据库时,但在这种情况下数据库需要引发事件。尽管数据库可以使用触发器引发事件但是有一些限制并且发生更改的范围在数据库中是有限的。显示应用程序中的更改(此处更新gridview)只能在仅从应用程序进行调用时才会发生。这可以使用应用程序中的计时器控件完成。但是不从应用程序发送对数据库的调用

答案 1 :(得分:0)

您可以使用将从应用程序脱机运行的Windows服务... 该服务将查询数据库,并在发生更改时更新系统中的文件... 在应用程序中,您可以对文件使用cahce依赖。

答案 2 :(得分:0)

我不是百分百肯定,但我认为您可以查看Windows Communication Foundation以及他们拥有的一些示例。

答案 3 :(得分:0)

为了让应用程序检测数据库中的更改,它必须监视相关表,或者以某种方式通过外部源通知数据库中的更改。使用计时器轮询数据库以进行更改是一种选择。让另一个程序执行该任务然后通知您的应用程序是另一种方法。某些数据库(如Firebird)能够发布应用程序可以侦听的事件。

根据我的经验,数据库发布事件是迄今为止最简单的解决方案,但它当然要求您使用具有该功能的数据库。你可能也应该考虑你的设计。为什么需要数据库来通知GUI?是否真的有必要或只是更新GUI的简单方法?在决定此策略之前,请花一些时间考虑应用程序中不同层应该填充的角色。

有人说,有时让数据库发起GUI更改或其他操作是完全可以接受的。如果数据库在多个用户之间共享,并且每个用户需要被告知其他用户采取的操作,那么这可能是一个很好的解决方案。就个人而言,在尝试使用数据驱动方法之前,我会尝试寻找其他通信方式,但在某些情况下,其他方面并没有那么多可行的选择。