什么是刷新组合框的数据发生变化时的最佳方法是什么?(What is the preferred me

2019-10-21 15:53发布

什么是刷新组合框的数据发生变化时的最佳方法是什么?

如果表单是开放的,组合框的数据已经被加载,你怎么刷新组合框的内容,而无需关闭并重装的形式?

你必须做一些事情上的组合框的Click事件? 这似乎是一个潜在放缓的应用程序,如果有一个命中每次点击组合框的数据库。

Answer 1:

您必须确定:

1)当你不改变的数据?

如果它取决于其他用户的活动,所以不能确定是否它不询问DB改变,你可以计算出最佳的时间进行刷新,像的形式加载或每一次点击,或者你可以使用一个计时器控件刷新在一个特定的时间数据。

2)什么时候你的用户需要了解这种变化?

试着去了解它是如何迫切需要的用户了解的变化。 跟他们说话。 根据是,决定什么时候你需要刷新数据。

最后:

没有这样做的正确方法。 这取决于软件结构,用户的需求和具体情况。

希望能帮助到你。 祝好运!

更新:

我可以添加一个解决方案,我最近使用过的。 如果有什么不明白,就问我。

我想,你耳目一新从MS SQL服务器的组合。

如果是这样的话,

1.创建一个表,在其存储组合的数据更改日期或版本。

2. onClick事件或使用定时器控制,这将检查每5分钟(或任何其他时间)的变化,您可以比较组合的最后修改日期(或版本),在我们店去年该表最后改变(或版本)日期(或版本),并且仅当日期(或版本)被改变,刷新组合。

3.最后日期(或版本),你可以在一个变量或在一个文本框控件存储,改变每次刷新组合时它的价值。

4.最后更新日期(或版本),该表中,如果数据的变化。

在这种情况下,你只需要检查的变化,而不是更新它们。

PS如果此解决方案没有脚,你,只刷新点击事件每次。 还有对于这种情况下,没有更好的事件。



Answer 2:

取决于有多少人将使用的形式,但在正常情况下,使用该选择框的onclick事件是好的。 使用Ajax调用是很好,因为它意味着你没有加载整个页面。



Answer 3:

有一点是明确的,你正在使用下拉意味着你需要在dropdowm我想不久的约20或30。然后加载没有更多的项目,什么是数据库调用的问题? 将创建使用的执行计划,并给您快的结果过程。 或者把你需要在一定的时间在缓存中加载,并填写您的缓存,如果数据被更改,然后在下拉菜单中加载数据的表。 我在窗口应用程序的工作我面临着同样的事情,但也没有更好的选择,然后调用数据库或将其放入高速缓存。



Answer 4:

我可以看到这样做的方法有两种:

  1. 将一个“刷新”按钮,在UI,只有当用户点击该按钮重新加载数据。 它应该是清楚明了的用户(描述性标签,消息框或其他),通过打刷新其当前的选择(S)可能会改变。

  2. 监测数据库组合的基础表数据的变化。 当数据发生变化时,UI可以紧接更新或只是存储关于数据标志已经改变(以后会更多)。 为了迅速知道,当数据发生变化,数据库触发器在我看来,最好的解决办法:触发器(UPDATE,INSERT,DELETE)为组合的基础表上,并增加计数器(日期时间,版本,不管你的船浮筒)在只为此目的创建一个单独的表。 每个组合重新填充(包括形式负载)时,计数器的值附后(标签?)它,与当前数据库值进行比较。 获取当前计数器值可以在定时器来完成。

现在,如果两个计数器是不同的有两种选择:

A.立即更新UI。 我通常会讨厌这样的UI,但是,不知道您的实际需求是什么,这可能会作为一个选项。

B.设置的UI应该更新的标志。 在下落事件,检查该标志:如果它被设置,通过重新填充组合开始。

在大多数情况下,我没有任何去刷新所有或与第一解决方案,但它实际上取决于需求。

HTH。

编辑:

触发器/计数器设置的目的不仅是为了获得改变的信息快,但真正知道,如果数据发生变化,这将是更为复杂直接查询底层表来完成。 很抱歉,如果这不是在我最初的发布清楚(甚至加入后),但英语不是我的母语。



Answer 5:

问题1:ComboboxName.Clear然后ComboboxName.Items.AddItem每个项目。 问题2:当然,这取决于列表是如何数据更改的频率以及有多大,但我可能会放一个计时器,设定每分钟左右。 这将防止过多的命中数据库,并会确保你的表格是不是花费过多时间在填充值的组合框。



文章来源: What is the preferred method of refreshing a combo box when the data changes?