Jsf 2 确定何时已选择表中的选定行
我在primefaces中有一个Jsf 2 确定何时已选择表中的选定行,jsf-2,primefaces,primefaces-extensions,Jsf 2,Primefaces,Primefaces Extensions,我在primefaces中有一个p:datatable,我有不同的监听器,用于选择datatable中的行事件 <script type="text/javascript"> var prevRow ; function checkDupRowClick(){ var currRow = $('tr.ui-widget-content.ui-datatable-selectable[aria-selected="true"]'); if
p:datatable
,我有不同的监听器,用于选择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>
我需要确定何时已选中表中的选定行,如何才能做到这一点
<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>
我需要这个,因为我不知道当我在表中选择已经选择的行时,p:blockUI
会运行
<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>
这是我的页面代码:
...
<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>
...
<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>
我认为您需要js中的一些函数,并在onstart中应用这些函数
<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>
那样
<p:ajax event="rowSelect" onstart="???" />
<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>
这是检查同一行上重复单击的脚本。
将此脚本放在
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>
如果您需要更多解释,请发表评论。您是否使用primefaces 5.1?或者你能说出你的primefaces库版本吗?因为我看不到您在`p:blockUI上使用的某些属性,或者您正在使用其他组件?我使用primefaces 5.0并使用primefaces扩展(对于带有事件捕获的blockUI)。看这个哦,好的。您可以使用
RequestContext
解决此问题,并在新选择的项目与上次选择的项目不同时运行pe:blockUI
。是否可以将may edition替换为p:blockUI
,这是我的错误。更改上下文不是解决方案。是的,我又编辑了一遍。我的解决方案可能是在p:ajax中的onstart事件中,如下所示:这个脚本可以工作。但是当返回false时,页面就不工作了。为什么?我的p:ajax是:有JS控制台错误吗?您的页面上有多少个表?2个表,但我知道这一点,并将脚本更改为:var prevRow;函数checkDupRowClick(){var currRow=$('#formDTItems tr.ui-widget-content.ui datatable可选[aria selected=“true”]);if($(currRow).is($(prevRow)){return false;}else{prevRow=currRow;返回true;}}
<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>