Обработка данных с помощью вложенных повторяющихся элементов управления - PullRequest
0 голосов
/ 13 июня 2018

В моем приложении я, как пользователь, могу создавать «предметы» через XPage.Эти элементы имеют неопределенное количество записей в списке (простой текстовый список), который я создаю сам.Эти записи будут использованы для генерации checkBoxes позже.

У меня есть список клиентов.Я могу добавить несколько предметов для каждого клиента.Элементы отображаются внутри repeat control.Каждая строка имеет внутренний repeat control для checkBoxes (сгенерированный из text list).

Теперь моя проблема в том, что я не уверен, как обрабатывать данные или, точнее, проверять /снятие отметки с checkBoxes, потому что у меня есть неопределенное количество элементов, а неопределенное число checkBoxes внутри элементов плюс checkBoxes доступны для редактирования.

Надеюсь, моя проблема ясна.Пожалуйста, дайте мне знать, если есть необходимость в пояснениях или если вам нужен какой-то код - хотя я думаю, что проблема заключается исключительно в логике в моей голове.

РЕДАКТИРОВАТЬ: Пользовательский элемент управления, которыйиспользуется в клиентском XPage, чекбоксы, о которых я упоминал выше, используются для `status.

. Как вы увидите ниже, я просто получаю ключи поиска для элементов и использую их для поиска текстовых списков для создания флажков.Поскольку элементы являются просто шаблонами, которые используются для каждого пользователя, который входит в систему, я не могу использовать эти документы для сохранения состояния флажков.

Единственное, о чем я могу думать в данный момент, - это на самом делесоздать документ для каждого элемента, добавляемого клиенту, и использовать этот документ в качестве хранилища - но разве нет лучшего способа?

<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core">
    <xp:this.resources>
        <xp:styleSheet href="/item.css"></xp:styleSheet>
    </xp:this.resources>
    <xp:repeat id="repeat1" rows="30" var="rowData" indexVar="rowIndex" style="border: 1px solid #ccc;">
        <xp:this.value>
            <![CDATA[#{javascript:return currentForm.getItemValue("itemSearchkey");}]]>
        </xp:this.value>

        <xp:div>

            <xp:button styleClass="accordion" id="button1">
                <xp:this.value>
                    <![CDATA[#{javascript:
                        var itemTitle = "";

                        if(!"".equals(rowData) || rowData != null) {
                            itemTitle = itemBean.getItemTitle(rowData);
                        }

                        return itemTitle;
                    }]]>
                </xp:this.value>
                <xp:eventHandler event="onclick" submit="false">
                    <xp:this.script>
                    <![CDATA[
                        // ... some code for the accordion to work
                    ]]>
                    </xp:this.script>
                </xp:eventHandler>
            </xp:button>

            <xp:div styleClass="panel">
                <xp:repeat id="repeat2" rows="30" var="rowDataStatus" indexVar="rowIndexStatus">
                    <xp:this.value>
                        <![CDATA[#{javascript:

                        var statusVector = null;

                        if(!"".equals(rowData) || rowData != null) {
                            statusVector = itemBean.getStatusList(rowData);
                        }

                        return statusVector;

                        }]]>
                    </xp:this.value>

                    <xp:checkBox id="checkBox1" checkedValue="true" uncheckedValue="false">
                        <xp:this.text><![CDATA[#{javascript:return rowDataStatus;}]]></xp:this.text>
                    </xp:checkBox>

                </xp:repeat>
            </xp:div>

        </xp:div>

    </xp:repeat>
</xp:view>

Чтобы создать список, используемый для checkBoxes Я использую простой inputTextArea в отдельном пользовательском элементе управления.currentForm является источником данных:

    ...
    <xp:inputTextarea id="statusList" value="#{currentForm.StatusList}"
        multipleSeparator="#{javascript:@NewLine()}" rows="8">
    </xp:inputTextarea>
    ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...