rks*_*rks 8 datatable primefaces jsf-2
我有一个primefaces数据表,我需要在JSF页面中显示(选择行数)(总行数).我可以使用rowIndexVar属性在其中一列中显示行号,但我不知道要显示在行选择的输入文本中分别使用相同的数字.
我应该在JSF页面或托管bean中做什么来获取选定的行号.
请帮助我这方面.
下面是我的JSF页面
<p:dataTable id="workSpaceList" var="data"
value="#{workSpaceBean.lpInfoList}" widgetVar="multiSelection"
selection="#{workSpaceBean.selectedRows}" resizableColumns="true"
liveScroll="true" scrollRows="55" scrollWidth="85%"
scrollHeight="81%" styleClass="datatable"
scrollable="true" rowIndexVar="rowIndex"
filteredValue="#{workSpaceBean.filteredWorkSpaceItems}">
<p:column selectionMode="multiple" style="width:3%" />
<p:column headerText="#" style="width:3%">
#{rowIndex+1}
</p:column>
<p:column headerText="Insured" filterBy="#{data.insuredName}"
sortBy="#{data.insuredName}" style="width:24%">
<h:outputText value="#{data.insuredName}" />
<!-- style="width:250px" -->
</p:column>
<p:column headerText="City" filterBy="#{data.custAddress_City}"
sortBy="#{data.custAddress_City}" style="width:12%">
<h:outputText value="#{data.custAddress_City}" />
</p:column>
.
.
.
.
</p:dataTable>
Run Code Online (Sandbox Code Playgroud)
Dan*_*rgo 19
我相信没有直接的方法可以做到这一点.虽然使用两个ajax请求并不漂亮,但至少可以达到使用普通PrimeFaces时所期望的结果.如果p:ajax将PrimeFaces扩展替换为pe:javascript不向服务器进行往返的PrimeFaces扩展,则可以将此减少为一个调用
数据表呈现的每一行(tr)都有一个名为data-rk的属性,其中包含rowKey,另一个属性名为data-ri,带有rowIndexVar值.
您可以通过dtWidgetVar.selection获取data-rk属性(dtWidgetVar是数据表中 widgetVar的名称).
您现在可以使用remoteCommand将indexRow发送到您的模型
这是我用来测试它的代码:
风景
<p:remoteCommand name="displayIndex" process="@this" update="index" actionListener="#{viewMBean.displayRowIndex}"/>
<p:dataTable id="dt" var="data"
value="#{viewMBean.dataModel}"
selection="#{viewMBean.selectedRow}"
selectionMode="single"
widgetVar="dtVar"
rowIndexVar="index">
<p:ajax event="rowSelect"
oncomplete="displayIndex([{name:'index', value:jQuery('tr[data-rk=' + dtVar.selection + ']').attr('data-ri')}])" process="@this" />
<p:column headerText="#">
#{index + 1}
</p:column>
<p:column headerText="Dados">
#{data.name}
</p:column>
</p:dataTable>
<br />
Row Index: <p:inputText id="index" value="#{viewMBean.index}" />
Run Code Online (Sandbox Code Playgroud)
管理Bean
public void displayRowIndex() {
FacesContext context = FacesContext.getCurrentInstance();
Map map = context.getExternalContext().getRequestParameterMap();
String pIndex = (String) map.get("index");
index = Integer.parseInt(pIndex);
}
Run Code Online (Sandbox Code Playgroud)
如果您使用复选框选择,您可以检索所选的索引,如下所示:
function beforeDisplayingIndexes(){
var indexes = "";
jQuery("tbody .ui-chkbox-box").each(function(){
if (jQuery(this).hasClass("ui-state-active")){
indexes = indexes + (indexes === "" ? "" : ",") + jQuery(this).closest("tr").attr("data-ri");
}
});
//for debuging only
console.log(indexes);
displayIndex([{name:'index', value:indexes}])
}
Run Code Online (Sandbox Code Playgroud)
您现在应该能够对代码进行适当的修改以利用它.
| 归档时间: |
|
| 查看次数: |
42142 次 |
| 最近记录: |