我有一个搜索屏幕,显示基于搜索值组合在一起的数据。这就是显示的完成方式。我有一个从后端bean动态填充的p:accordionpanel
。我在p:datatable
有一个p:accordianpanel
。每个可以显示多个包含数据表的手风琴面板。显示按预期工作。
问题:我在数据表上实现了过滤器和多个行选择。如果有多个数据表被填充,则过滤器和搜索仅适用于最后一个数据表。 selection
的filteredValue
和p:datatable
属性必然是分开的对象。如果单击任何“全选”框,则会选择最后一个表中的行。我希望选中表格中与“全选”关联的行。
这是手风琴/数据表:
<p:accordionPanel multiple="true"
value="#{basicSearchResultsVO.sortedMessages}" var="sortedMessages">
<p:tab title="#{sortedEdiMessages.key}">
<p:dataTable id="dataTable"
emptyMessage="No Data found with searched criteria"
filteredValue="#{sortedMessages.value.filteredMessages}"
rowKey="#{message.archiveSequenceI}"
rows="10"
selection="#{sortedMessages.value.selectedMessages}"
sortBy="#{message.msgDateTimeTs}" sortOrder="descending"
value="#{sortedMessages.value.messages}" var="message"
widgetVar="messagesTable">
<f:facet name="header">
<p:outputPanel style="text-align: right;margin:3px;">
<h:outputText value="Search all fields:"/>
<p:inputText id="globalFilter" onkeyup="PF('messagesTable').filter()" style="width:150px;" placeholder="Enter keyword"/>
</p:outputPanel>
</f:facet>
...
</p:dataTable>
</p:tab>
...
</p:accordionPanel>
我不确定我错过了什么。非常感谢您的帮助和反馈。
好。我发现了代码的问题。必须使数据表上的widgetVar
属性唯一,以便过滤器/多选在每个数据表上正常工作。这是修改后的代码。唯一的变化是widgetVar
的p:datatable
属性和onkeyup
的p:inputText
属性绑定到后端bean提供的唯一值。
<p:accordionPanel multiple="true"
value="#{basicSearchResultsVO.sortedMessages}" var="sortedMessages">
<p:tab title="#{sortedEdiMessages.key}">
<p:dataTable id="dataTable"
emptyMessage="No Data found with searched criteria"
filteredValue="#{sortedMessages.value.filteredMessages}"
rowKey="#{message.archiveSequenceI}"
rows="10"
selection="#{sortedMessages.value.selectedMessages}"
sortBy="#{message.msgDateTimeTs}" sortOrder="descending"
value="#{sortedMessages.value.messages}" var="message"
widgetVar="#{sortedEdiMessages.key}">
<f:facet name="header">
<p:outputPanel style="text-align: right;margin:3px;">
<h:outputText value="Search all fields:"/>
<p:inputText id="globalFilter" onkeyup="PF('#{sortedEdiMessages.key}').filter()" style="width:150px;" placeholder="Enter keyword"/>
</p:outputPanel>
</f:facet>
...
</p:dataTable>
</p:tab>
...
</p:accordionPanel>