p:tree:取消选择事件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了p:tree:取消选择事件相关的知识,希望对你有一定的参考价值。

如果某个条件为真,有没有办法在primefaces p:tree中取消节点的select事件?

我想显示一个对话框,如果用户选择“取消”选项,则不应更改选择。我试过从p:ajax调用javascript函数,但无论如何都选择了新节点。

<p:ajax event="select" onstart="showDialog()"/>

我必须覆盖Primefaces树的默认行为?


PF6.2

答案

如果要取消请求,则需要在false中显式返回onstart

onstart="return false;"

将取消该请求。这意味着您需要从showDialog返回true或false并在onstart中显式返回该值。所以

onstart="return showDialog();"

那么你的挑战是如何“延迟”这个javascript函数的返回,这样你就可以提供用户操作的返回值。

另一答案

我终于想出了另一个解决方案:我已经覆盖了Primefaces VerticalTree小部件的'nodeClick',这样我就可以选择显示一个Dialog OR来继续选择。

这是一个例子:

var param0, param1,param2;

function init() {
    PF('treeWidgetVar').nodeClick = function (b, a) {
        param0 = this;
        param1 = b;
        param2 = a;

        if(checkSomeCondition() == 'true'){
            showMyDialog();
            return;
        }else {
            PrimeFaces.widget.VerticalTree.prototype.nodeClick.call(this, b, a);
        }
    };
}

function doSelection(){
    PrimeFaces.widget.VerticalTree.prototype.nodeClick.call(param0, param1, param2);
}

我使用了JQuery UI确认对话框。如果用户单击“继续”,我使用savad参数进行选择,否则我只是关闭对话框。

    $( function() {
        $( "#dialog-confirm" ).dialog({
            autoOpen: false,
            resizable: false,
            height: "auto",
            width: 400,
            modal: true,
            buttons: {
                "Continue": function() {
                    $( this ).dialog( "close" );
                    doSelection();
                },
                Cancel: function() {
                    $( this ).dialog( "close" );
                }
            }
        });
    } );

有点棘手,但似乎工作得很好。

以上是关于p:tree:取消选择事件的主要内容,如果未能解决你的问题,请参考以下文章

easyui Tree模拟级联勾选cascadeCheck,节点选择,父节点自动选中,节点取消,父节点自动取消选择,节点选择,所有子节点全部选择,节点取消,所有子节点全部取消勾选

关于弹窗 取消 确定清空按钮的事件

Element-ui中tree树形控件全选与取消全选的功能实现

easyui tree 怎么获取选择节点子节点上的值?js怎么写?

JS监听checkbox的选择获取取消事件代码案列

当用户取消意图选择器时是不是有事件?