我有一个p:datatable
在 primefaces 中,我有不同的侦听器,以不同的方式在数据表中选择行事件。
我需要确定表中所选行何时已被选择,我该怎么做?
我需要这个因为我不想那个p:blockUI
当我选择表中已选择的行时运行。
有我的页面代码:
...
<pe:blockUI autoShow="true"
source="itemsDT"
event="rowSelect"
target=":processTab">
<au:loading />
</pe:blockUI>
<p:dataTable widgetVar="processesTable"
id="itemsDT"
var="item"
value="
{tasksbacking2.availableProcesses}"
selection="#{tasksbacking2.selectedProcess}"
rowKey="#{item.id}"
tableStyleClass="table
table-condensed table-bordered"
resizableColumns="true">
<p:ajax event="rowSelect"
listener="#{tasksbacking2.onClickFillDetails}"
update="@this,:processTab,:menuForm:menuBar" />
...
</p:dataTable>
...
在托管 bean 上我有这个监听器:
...
public void onClickFillDetails(SelectEvent event) {
AnoProcess clickedProcess = (AnoProcess) event.getObject();
setSelectedProcess(clickedProcess);
Movement currentMovement = this.getProcessesLastMovement().get(clickedProcess);
if (currentMovement != null && !currentMovement.isViewed()) {
markAsRead(processes);
}
...
}
这是检查同一行是否重复单击的脚本。
将此脚本放在您的下面p:dataTable
代码。
<script type="text/javascript">
var prevRow ;
function checkDupRowClick(){
var currRow = $('tr.ui-widget-content.ui-datatable-selectable[aria-selected="true"]');
if($(currRow).is($(prevRow))){
//selected or clicked same row so return FALSE to prevent p:ajax from executing
return false;
}else{
//selected or clicked different row so return TRUE to allow p:ajax to execute
prevRow = currRow;
return true;
}
}
</script>
AND 使用函数作为返回参数p:ajax
<p:ajax event="rowSelect" onstart="return checkDupRowClick();" />
如果您需要更多解释,请发表评论。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)