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树形控件全选与取消全选的功能实现