Teamstudio Unplugged: встроенное редактирование
Я использую Teamstudio отключен для записи.
Я пытаюсь построить таблицу, используя повторяющийся элемент управления с представлением в качестве источника данных. Пользователь должен иметь возможность изменять редактировать документы, а затем сохранять все источники данных.
Ниже приведен пример, который в настоящее время не работает. Я также попытался использовать вычисленные идентификаторы для всех различных флажков в ячейках и сохранить UNID документа строки в скрытом текстовом поле, а затем прочитать каждую строку на основе вычисленных идентификаторов и сохранить их. Это не сработало, потому что вычисление идентификаторов в ретрансляторе невозможно при отключенном питании, несмотря на огромные усилия.
Если я сделал что-то не так или есть трюк, который я не пробовал, я хотел бы услышать об этом.
<xp:table id="table">
<xp:tr>
<xp:td>Document name</xp:td>
<xp:td>Field1</xp:td>
<xp:td>Field2</xp:td>
<xp:td>Field3</xp:td>
</xp:tr>
<xp:repeat id="repeat1" rows="30"
value="#{TestDocs}" indexVar="index" var="Docs" first="0"
removeRepeat="true" repeatControls="true">
<xp:panel>
<xp:tr>
<xp:td>
<xp:text id="Name" escape="true"
value="#{document1.Name}">
</xp:text>
</xp:td>
<xp:td>
<xp:checkBox id="Field1"
checkedValue="true" uncheckedValue="false"
value="#{document1.Field1}">
<xp:this.defaultChecked><![CDATA[${javascript:
if(document1.getDocument().getItemValue("Field1")=="[true]"){
return true;
}else{
return false;
}}]]></xp:this.defaultChecked>
</xp:checkBox>
</xp:td>
<xp:td>
<xp:checkBox id="Field2"
checkedValue="true" uncheckedValue="false"
value="#{document1.Field2}">
<xp:this.defaultChecked><![CDATA[${javascript:
if(document1.getDocument().getItemValue("Field2")=="[true]"){
return true;
}else{
return false;
}}]]></xp:this.defaultChecked>
</xp:checkBox>
</xp:td>
<xp:td>
<xp:checkBox id="Field3"
checkedValue="true" uncheckedValue="false"
value="#{document1.Field3}">
<xp:this.defaultChecked><![CDATA[${javascript:
if(document1.getDocument().getItemValue("Field3")=="[true]"){
return true;
}else{
return false;
}}]]></xp:this.defaultChecked>
</xp:checkBox>
</xp:td>
</xp:tr>
</xp:panel>
</xp:repeat>
</xp:table>
<xp:button value="Save" id="button3"
styleClass="button">
<xp:eventHandler event="onclick" submit="true"
refreshMode="complete" disableValidators="true">
<xp:this.action>
<xp:save></xp:save>
</xp:this.action>
</xp:eventHandler>
</xp:button>
1 ответ
Я бы хотел перенести логику на всю эту клиентскую сторону. Поэтому создайте таблицу с помощью jQuery, а затем при сохранении извлеките значения из полей, которые вы создали, и запишите их в скрытые поля, которые фактически будут сохранены.
С точки зрения вычисления идентификаторов полей и т. Д. Я бы добавил атрибуты к элементам, с которыми вы хотите работать, а затем выбрал их с помощью jQuery:
$('[myattr="the value"]')