В моем приложении я, как пользователь, могу создавать «предметы» через 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>
...