从 onclick 事件访问组合框中的选定值

Posted

技术标签:

【中文标题】从 onclick 事件访问组合框中的选定值【英文标题】:Access the selected value in a combo box from onclick event 【发布时间】:2013-09-12 16:42:44 【问题描述】:

我有一个包含值列表的组合框。 ComboBox 未绑定到数据源。 我在组合框上有一个 onClick 事件,我需要知道选择了什么值。我可以做一个 getComponent("comboBox1").getValue() 但我知道这是访问控件值的效率最低的方法。有没有更好的方法来访问所选值?

【问题讨论】:

那个组合框真的被大量使用以至于getComponent不够高效吗? 虽然你可能是对的。但是我有一个相当复杂的 XPage,正在进行大量的处理。我一直在检查我的代码,并试图尽可能多地摆脱对 getComponent 的引用。结果非常显着。我建议远离 getComponent。我尽可能直接访问数据源,同样避免使用后端文档。 我同意最好使用最有效的方式,看起来你得到了很好的回应! 【参考方案1】:

我会将组合框绑定到 viewScope 变量。在其他地方易于访问和使用。 但是有很多方法可以获得价值,但这是我更喜欢的方式。

【讨论】:

@Bill Fox - 我这样做了,效果很好。以前从未有机会检查过这个,但它是一个简洁、快速的解决方案。非常感谢。【参考方案2】:

在任何服务器端事件处理程序的上下文中,javascript 变量this 指的是事件处理程序本身。因为事件处理程序实际上是组件,并且被视为与它们关联的任何组件的“子”,所以表达式 this.getParent() 将返回关联组件的句柄。

因此,当您只是试图获取触发事件的同一组件的值时(在您的情况下,组合框的 onClick 事件):

this.getParent().getValue()

这不会像getComponent() 那样遭受同样的低效率,因为它不需要搜索……它只是在组件树中向上导航一级。但是,如果其他组件将受益于知道它的值,您还应该遵循 Fredrik 的建议并将该组件绑定到一个 viewScope 变量,这样您就可以从内存中检索该值,而不是尝试从页面的其他位置定位 UI 组件结构。

【讨论】:

只需在getParent 之后添加括号,就像在第一段中一样。那个小修改是我不允许做的。 谢谢,确实绑定到 viewScope 并喜欢它。从来没有真正弄清楚为什么要绑定到范围变量,但它工作得很好,我可以看到我可能会返回并更改其他代码中的一些内容。

以上是关于从 onclick 事件访问组合框中的选定值的主要内容,如果未能解决你的问题,请参考以下文章

根据数据绑定组合框中的选定项目从访问数据库中删除

从访问 vba 中的多值组合框中获取值

访问表单 VBA ComboBox 点击事件

在Winform的组合框中获取旧的选定索引

从组合框中访问 VBA 随机值

如何将组合框中的选定元素保存为 PyQt5 中的变量?