除静态列外,还添加动态列

时间:2016-04-11 12:08:08

标签: jsf primefaces datatable

我有一些带有一些列的dataTable,这些列不应该改变。

            <p:dataTable id="datatable" value="#{phase.tasks}" var="task">
             <p:commandButton id="Testcycles"
                                            action="#{testprojectProducer.doAddTestCycle(phase)}"
                                            update=":formID:Tasks" title="add Test "
                                            icon="ui-icon-plus fa fa-plus">
                                            <!--                                                   <p:ajax oncomplete="#{testprojectProducer.doAddTest(phase)}" update=":formID:Tasks"></p:ajax> -->
                                        </p:commandButton>
                            <f:facet name="header">
                                <h:panelGrid>
                                    <h:panelGroup columns="2"
                                        style="display:block; text-align:right">                            
                                <p:column>
                                <f:facet name="header">
                                        Task    
                                        </f:facet>
                                <h:outputText value="#{task.name}" id="description"
                                    title="#{task.description}" />
                                <pe:tooltip for="description" value="#{task.description}" />
                            </p:column>
                            <p:column>
                                <f:facet name="header">
                                        Tool    
                                        </f:facet>
                                <p:commandLink value="#{task.tool}" ajax="false"
                                    action="#{fileLinkController.openFile()}" />
                            </p:column>
                            <p:column>
                                <f:facet name="header">
                                        Result  
                                        </f:facet>
                                <h:outputText value="#{task.resultDocuments}" />
                            </p:column>

除此之外,用户还应该有可能添加新列。

        <p:columns value="#{task.listTest}"
                    var="sometest">
                <f:facet name="header">
                    Test
                </f:facet>
                    <p:inputText id="comment"
                        value="#{sometest.description}">
                    </p:inputText>
        </p:columns> 
    </p:dataTable>

这是我添加新测试的方法。

    public void doAddTest(Phase phase) {
      for (Task task : phase.getTasks()) {

        task.getListTest().add(new Test(task));

    }


}

我意识到无法按行控制列,但我真的需要一些建议,如何保留静态列并添加动态列。

使用按钮调用

doAddTest(),您可以在Tag下找到。 首先,在表中显示额外的列并且用户可以选择发表评论。使用此方法,列的内容将写入数据库。

    public String doSave() {

    if (testprojectProducer.isAddMode()) {
        testprojectAddEvent.fire(testprojectProducer.getTestproject());

        }
    } else {
        testprojectUpdateEvent.fire(testprojectProducer.getTestproject());
    }

    return Pages.LIST_TESTPROJECT;
}

0 个答案:

没有答案