primefaces 6.1实时滚动是在编辑记录时从selectonemenu组件的值中删除数据

时间:2019-01-25 17:50:58

标签: jsf primefaces

我有jsf primefaces 6.1实时滚动,每次滚动100行。默认情况下,所有行都是禁用的。每行都有编辑命令,单击该按钮可以启用特定行进行编辑。我从上到下随机滚动,然后单击每个编辑行,然后就可以进行编辑了。
    在实时滚动过程中,我将到达最后一个记录(即第500个记录)的末尾。我想对一组选定的行进行编辑。         每次单击“编辑”按钮时,页面都会刷新并显示前100条记录。此页面刷新是为了避免显示重复的记录。为了转到第500条记录,您必须再次进行实时滚动。                         我的问题是,在1至500条记录之间来回滚动时,可编辑下拉菜单(p:selectOneMenu component value)中的数据被删除了。这些下拉列表显示空白值,而不显示默认值。 请让我知道在实时滚动时如何在selectOneMenu组件的值上保留默认数据。
还有其他inputtext字段可以通过保留默认数据来正常工作。问题仅在于p:selectOneMenu下拉菜单。

<p:dataTable id="datatableid"
value="#{bean.list}"
var="rec" resizableColumns="true" resizeMode="expand" 
liveScroll="true"  scrollHeight="100%" scrollWidth="100%" scrollable="true" rowIndexVar="rowIdx" scrollRows="100">

<p:column headerText="*State" width="250">
<p:selectOneMenu id="stateid" disabled="${!rec.editable}"
value="${rec.state}" > // this value is erased during live scrolling the page.
<f:selectItem itemLabel="" itemValue="" />
<f:selectItems value="bean.stateslist"
var="item" itemValue="#{item.statevalue}"
itemLabel="#{item.statename}" />
</p:selectOneMenu>

</p:column>
    <p:column headerText="Edit" width="50">
        <p:commandButton id="EditBtn"
            action="#{bean.editRecord(rec)}"                            
            update="datatableid">
        </p:commandButton>
    </p:column>

java代码:

public String editRecord(DTOClass a_selectedRow) {
    // this code Refreshing page for resetting live scrolling to first 100 //records to avoid duplicate display of rows.
FacesContext context = FacesContext.getCurrentInstance();
String refreshpage = context.getViewRoot().getViewId();
ViewHandler handler = context.getApplication().getViewHandler();
UIViewRoot root = handler.createView(context, refreshpage);
root.setViewId(refreshpage);
context.setViewRoot(root);

// this code enables the row for editing.
a_selectedRow.setEditable(true);
return null;
}

0 个答案:

没有答案