我正在使用JSF和PrimeFaces开发一个应用程序,关于PrimeFaces的datatable,我需要帮助。我的表格中有大量的数据,可以进行单选或多选。
我希望能够通过操作或默认位置自动选择行。
我的需求是当我在表格中选择第20行并进入下一页,并执行一些处理后返回到同一页时,它仍然选择第20行,但尚未滚动到该位置。
我需要将滚动条滚动到所选位置并进行处理。
以下是我的视图代码:
<p:dataTable id="reactionTable" var="reactions" value="#{curation.reactionsList}"
selection="#{curation.selectedReactions}" scrollable="true" scrollHeight="200" rows="10"
rowKey="#{reactions.id}" widgetVar="reactionVar"
style="width: 1350px; font-size: 13px;" filteredValue="#{curation.reactionsFilteredList}"
resizableColumns="true">
<p:ajax event="rowToggle" listener="#{curation.toggleReaction}"/>
<p:ajax event="rowSelect" listener="#{curation.showStages}" update="@form"/>
<p:column selectionMode="multiple" style="width:5%" />
<p:column headerText="Id" width="7%" filterBy="#{reactions.rxnId}" filterStyle="width: 35px;" filterMatchMode="contains" sortBy="#{reactions.rxnId}">
#{reactions.rxnId}
</p:column>
<p:column headerText="RxnNo" width="9%" filterBy="#{reactions.rxnNo}" filterStyle="width: 35px;" filterMatchMode="contains" sortBy="#{reactions.rxnNo}">
#{reactions.rxnNo}
</p:column>
<p:column headerText="RxnSeq" width="9%" filterBy="#{reactions.rxnSeq}" filterStyle="width: 25px;" filterMatchMode="contains" sortBy="#{reactions.rxnSeq}">
#{reactions.rxnSeq}
</p:column>
<p:column headerText="RSD" width="40%" filterBy="#{reactions.rsd}" filterStyle="width: 250px;" filterMatchMode="contains" sortBy="#{reactions.rsd}">
#{reactions.rsd}
</p:column>
<p:column headerText="RSN" width="40%" filterBy="#{reactions.rsn}" filterStyle="width: 250px;" filterMatchMode="contains" sortBy="#{reactions.rsn}">
#{reactions.rsn}
</p:column>
<p:column headerText="RSN Free Type" width="40%" filterBy="#{reactions.rtf}" filterStyle="width: 250px;" filterMatchMode="contains" sortBy="#{reactions.rtf}">
#{reactions.rtf}
</p:column>
<f:facet name="footer">
<p:commandButton value="Copy" icon="ui-icon-search"
update="reactionTable" actionListener="#{curation.copyReaction()}" style="height: 25px; font-size: 12px; font-weight: bold;"/>
<p:commandButton value="Create RSD" id="create" actionListener="#{curation.createReaction()}" action="#{createReaction.createRsd()}" style="height: 25px; font-size: 12px; font-weight: bold;"/>
<p:commandButton value="Update" id="ajax" update="@form" actionListener="#{curation.updateBatch}" style="height: 25px; font-size: 12px; font-weight: bold;"/>
</f:facet>
但是我使用了一个JavaScript来实现滚动位置固定。
var scrollPosition;
function saveScrollPosition() {
scrollPosition = $('#reactionTable').scrollTop();
}
function setScrollPosition() {
$('#reactionTable').scrollTop(scrollPosition);
}
但它也没有起作用,有人能帮我解决这个问题吗?