java ZK组合框禁用关闭

dohp0rv5  于 2023-01-16  发布在  Java
关注(0)|答案(1)|浏览(98)

我在ZK框架组合框UI渲染方面遇到了困难。我有一个带有2个逻辑列表的组合框(1是2的简短版本,带有“显示更多”选项,2是一个列表,包含所有条目,没有“显示更多”选项)。我已经做了一些列表交换逻辑,通过“显示更多”选项的onClick事件跟踪。当我单击此选项时,组合框关闭,然后我需要重新-我打开它来查看完整的列表。所以我的问题是,有人知道如何在我点击这个特定选项时保持组合框打开(而且,通过另一个列表动态填充模型)吗?也许还有其他更有效地完成任务的最佳实践?谢谢大家的帮助
我有个想法是关于多选的组合框,点击某个选项后不会关闭,但是我没有找到相关的信息,也许你可以给我一些建议

46scxncf

46scxncf1#

默认情况下不支持你想要的"点击'显示更多'并保持弹出窗口打开"的行为。所以你必须覆盖它的js部件的doClick_(),请阅读https://www.zkoss.org/wiki/ZK_Client-side_Reference/General_Control/Widget_Customization
这里有一个例子。

<zscript><![CDATA[
ListModelList fullModel = new ListModelList(Locale.getAvailableLocales());
ListModelList model1 = new ListModelList(fullModel.subList(0, 2));
model1.add("show more");

    ]]></zscript>
<combobox id="box" model="${model1}" readonly="true" onSelect="loadAll()"/>
<script src="comboitem-doclick.js"/>
    <zscript><![CDATA[
    public void loadAll(){
        if (model1.getSelection().iterator().next().equals("show more")){
            box.setModel(fullModel);
            box.setValue("");
        }
    }
    ]]></zscript>
/**
 * Purpose: when a user selects a specific item, keep the popup open.
 * Based on version: 9.6.3
 */
zk.afterLoad('zul.inp', function() {
    var exWidget = {};
    zk.override(zul.inp.Comboitem.prototype, exWidget, {
        doClick_: function doClick_(evt) {
            if (!this._disabled) {
                var cb = this.parent;

                cb._select(this, {
                  sendOnSelect: true,
                  sendOnChange: true
                });

                this._updateHoverImage();
                if (this.getLabel() != 'show more'){
                    cb.close({
                      sendOnOpen: true,
                      focus: true
                    }); // Fixed the onFocus event is triggered too late in IE.
                }

                cb._shallClose = true;
                if (zul.inp.InputCtrl.isPreservedFocus(this)) zk(cb.getInputNode()).focus();
                evt.stop();
            }
        },
    });
});

相关问题