ВыберитеManyMenu в каждой строке Treetable не работает Primefaces - PullRequest
0 голосов
/ 11 мая 2019

Поскольку celleditor компонента primefaces не поддерживает selectCheckboxMenu, я создал пользовательский selectCheckboxMenu для имитации этой функциональности.Я реализовал это, используя оверлейную панель и selectManyMenu.Внешний вид такой же, как у selectCheckBoxMenu, но я столкнулся с серьезной проблемой.Когда я впервые пытаюсь отобразить selectManyMenu внутри древовидной таблицы, выбранные элементы равны 0. Это происходит потому, что свойство, содержащее выбранные элементы, обновляется пустой строкой.Возможно, я мог бы объяснить это, потому что я использовал один и тот же идентификатор для каждого ребенка в древовидной таблице.Я проверил только с одним ребенком и родителем, и результат был таким же.Возможно, есть лучший способ реализовать это.Все ваши предложения и идеи приветствуются.

 <ui:define name="content-center">
        <h:form id="form">
                <p:treeTable id="treetable" value="{selectManyView.getRoot()}" var="node"
                             selectionMode="checkbox"
                             nodeVar="treeNode" selection="#{selectManyView.selectedNodes}">

                    <p:column headerText="CalculationType">
                        <p:treeNode rendered="#{node.getNodeType().name() == 'Child'}" style="padding-left:24px;">

                            <h:outputText value="#{selectManyView.transformThemesToString(node)}"
                                          id="calculationTypes"  />

                            <p:commandLink onclick="PF('calc').show()">
                                <i class="ui-icon ui-icon-triangle-1-s ui-c"></i>
                            </p:commandLink>
                            <p:overlayPanel id="calcTypesPanel" hideEffect="fade"
                                            style="width:auto;" widgetVar="calc">
    <p:selectManyCheckbox  value="#{node.calculationTypes}"  >
                                    <p:ajax event="change" listener="#{node.setSelectedCalculationTypes()}" update="calculationTypes"/>
                                    <f:selectItems value="#{selectManyView.tableCalculationTypes()}"/>
                                </p:selectManyCheckbox>
                            </p:overlayPanel>
                        </p:treeNode>
                    </p:column>
                </p:treeTable>
        </h:form>

Я бы хотел, чтобы selectManyMenu имел выбранные элементы, которые я определил в управляемом компоненте.

...