过滤数据表后,Primefaces会丢失对话框中的数据

时间:2015-01-13 14:06:18

标签: jquery jsf primefaces datatable

大家好我有一个问题,关于primefaces数据表。我建了一个仪表板,人们可以在那里查找一些东西。所以在数据表中显示了数据库中的一些值。每行都有一个按钮,可以获得更多特殊细节。因此,如果单击此按钮,将打开一个包含更多详细信息的对话框。数据表的某些值显示在对话框中,还有一些值。所以这工作正常。现在我发现过滤器会删除对话框中的值。当我使用过滤器功能时,他过滤我的值,更新并渲染新的数据表,当我现在单击按钮时,对话框中的值消失了。为什么呢?

<h:form id="form1">
    <p:dataTable value="#{auftragBean.auftragsDaten}" var="auftrag"
        rowKey="#{auftragBean.auftragsDaten}" selectionMode="single">

        <f:facet name="header">
            ...
        </f:facet>

        <p:column style="width:200px;text-align:center"
            filterBy="#{auftrag.schadennummer}" headerText="Schadennummer"
            filterMatchMode="contains">
                #{auftrag.schadennummer}
            </p:column>

        <p:column headerText="Auftragsbericht" style="text-align:center">
            <p:commandButton styleClass="viewbutton" icon="ui-icon-search"
                style="border-left:1px solid #666; height:20px;font-size:10px;"
                oncomplete="PF('dlg').show();" value="Open"
                actionListener="#{auftragBean.initSelectedData(auftrag)}"
                update="@widgetVar(dlg)" process="@this"></p:commandButton>
        </p:column>
    </p:dataTable>




<p:dialog appendToBody="true" appendTo="@(body)" modal="true"
        id="dialog" resizable="false"
        header="Auftragsbericht &nbsp;&nbsp;-&nbsp;&nbsp; #{auftragBean.auftragsData.jobId}"
        widgetVar="dlg" showEffect="drop" hideEffect="drop">
        <div style="max-height: 1000px; padding-right: 20px">

            <p
                style="margin-top: 10px; color: black; font-size: 16px; padding-bottom: 0px; text-align: center;">
                <b>Bearbeitungsverlauf</b>
            </p>
            <div class="berichtTabelle">
                <h:form id="form2">
                    <p:dataTable
                        style="width:1300px;margin:0 auto;margin-top:20px;overflow:hidden"
                        value="#{auftragBean.berichtsDaten}" var="bericht"
                        rowKey="#{bericht.tickerId}" selectionMode="single">

                        <f:facet name="header">
                            <p:outputPanel style="height:20px">
                                <h:outputText value="Bearbeitungsverlauf"
                                    style="float:left;font-size:14px;" />
                            </p:outputPanel>
                        </f:facet>

                        <p:column style="text-align:center" headerText="Status">
                            #{bericht.status}
                        </p:column>

                    </p:dataTable>
                </h:form>
            </div>
        </div>
    </p:dialog>   </h:form>

我已经搜索了这个问题,但还没有找到解决方案。也许有人可以提供帮助?

1 个答案:

答案 0 :(得分:2)

如果您过滤dataTable,则应定义filteredValue的{​​{1}}属性,该属性代表您的过滤数据。它应与此dataTable的{​​{1}}属性的类型相同。