Hello,
We've got a TableView (wrapped in a Form component) that consists of a
variety of form elements. We're noticing a problem when the values of these
elements (like textfields) is changed. Here's a use case: I have 10 rows,
each is updated and when the changes are submitted, the iterator only sets
the new values on the first row...so row 1 is updated with the values of row
1, then row 1 is updated with row 2,...repeat until the last row is reached
- where row 1 will then contain row 10's values - and the rest of the rows
values remain unchanged (with values before any changes were submitted).
Please help, this thing's on its way to QA....
<table width="100%" border="0" jwcid="layoutNavTable" name="layoutNavTable"
id="layoutNavTable" class="centerInnerTbl">
<span jwcid="layoutNavTableColumns"/>
<span jwcid="layoutNavTableRows">
<!-- Blocks for custom rows values -->
<span jwcid="layoutNavTableValues">
<span jwcid="actionsColumnValue">
<input jwcid="deleteNavColumn"
image="ognl:components.reportMapAssets.assets.deleteAction" alt="Delete
Admin Report Map" onclick="javascript: getConfirmation();"
class="imgInput"/>
</span>
<span jwcid="sortColumnValue">
<span jwcid="sortField"></span>
</span>
<span jwcid="colTitleColumnValue">
<span jwcid="colTitleField"></span>
</span>
<span jwcid="dataFieldColumnValue">
<span jwcid="dataField"></span>
</span>
<span jwcid="alignColumnValue">
<input jwcid="alignSelect"/>
</span>
<span jwcid="typeColumnValue">
<input jwcid="typeSelect"/>
</span>
<span jwcid="widthColumnValue">
<span jwcid="width"></span>
</span>
<span jwcid="colSpanColumnValue">
<span jwcid="colSpan"></span>
</span>
<span jwcid="navContextColumnValue">
<span jwcid="navContextSelect"/>
</span>
<span jwcid="visibleColumnValue">
<input jwcid="visibleSelect"/>
</span>
<span jwcid="requiredColumnValue">
<input jwcid="requiredSelect"/>
</span>
</span>
<!-- //end rows block -->
</span>
<tr>
<td colspan="11" align="right"><input
jwcid="addNavColumn" class="submitBtn"/></td>
</tr>
</table>
/** From the .page file **/
<property name="row"/> <!-- holder for current collection row -->
<property name="currentEntry"/>
<property name="currentMap"/>
<component id="layoutNavTable" type="contrib:TableView">
<binding name="source" value="layoutNavColumns"/>
<binding name="columns" value="literal:!actions: :actions,
!sort:Order:sort, !colTitle:Col Title:colTitle, !dataField:Data
Field:dataField, !align:Align:align, !type:Type:type, !width:Width %:width,
!colSpan:Colspan:colSpan, !navContext:Nav Context:navContext,
!visible:Visible:visble, !required:Required:required"/>
</component>
<component id="layoutNavTableColumns" type="contrib:TableColumns">
<binding name="arrowUpAsset" value="
components.reportMapAssets.assets.upArrow"/>
<binding name="arrowDownAsset" value="
components.reportMapAssets.assets.downArrow"/>
</component>
<component id="layoutNavTablePages" type="contrib:TablePages"/>
<component id="layoutNavTableRows" type="contrib:TableRows">
<binding name="row" value="row"/> <!-- The value object of the
current row being rendered -->
</component>
<component id="layoutNavTableValues" type="contrib:TableValues"/>
<component id="actionsColumnValue" type="Block"/>
<component id="deleteNavColumn" type="ImageSubmit">
<binding name="listener" value="listener:doDeleteNavColumn"/>
<binding name="parameters" value="row"/>
</component>
<!-- Customized sort column -->
<component id="sortColumnValue" type="Block"/>
<component id="sortField" type="TextField">
<binding name="value" value="ognl:row.sort"/>
<binding name="size" value="1"/>
<binding name="translator" value="translator:number"/>
<binding name="validators" value="validators:min=0"/>
<binding name="displayName" value="literal:Sort"/>
</component>
<!-- Customized columnTitle column -->
<component id="colTitleColumnValue" type="Block"/>
<component id="colTitleField" type="TextField">
<binding name="value" value="ognl:row.colTitle"/>
<binding name="size" value="15"/>
</component>
<!-- Customized Data Field column -->
<component id="dataFieldColumnValue" type="Block"/>
<component id="dataField" type="TextField">
<binding name="value" value="ognl:row.dataField"/>
<binding name="size" value="15"/>
</component>
<!-- Customized Align column -->
<component id="alignColumnValue" type="Block"/>
<component id="alignSelect" type="PropertySelection">
<binding name="model" value="row.availAlign"/>
<binding name="value" value="row.align"/>
</component>
<!-- Customized Type column -->
<component id="typeColumnValue" type="Block"/>
<component id="typeSelect" type="PropertySelection">
<binding name="model" value="row.availType"/>
<binding name="value" value="row.type"/>
</component>
<!-- Customized Width column -->
<component id="widthColumnValue" type="Block"/>
<component id="width" type="TextField">
<binding name="value" value="ognl:row.width"/>
<binding name="size" value="1"/>
</component>
<!-- Customized Colspan column -->
<component id="colSpanColumnValue" type="Block"/>
<component id="colSpan" type="TextField">
<binding name="value" value="ognl:row.colSpan"/>
<binding name="size" value="1"/>
</component>
<!-- Customized Nav Context column -->
<component id="navContextColumnValue" type="Block"/>
<component id="navContextSelect" type="PropertySelection">
<binding name="model" value="row.availNavContext"/>
<binding name="value" value="row.navContext"/>
</component>
<component id="addNavColumn" type="Submit">
<binding name="listener" value="listener:doAddNavColumn"/>
<binding name="value" value="literal:Add Column"/>
</component>
<!-- Customized Visible column -->
<component id="visibleColumnValue" type="Block"/>
<component id="visibleSelect" type="PropertySelection">
<binding name="model" value="row.availVisible"/>
<binding name="value" value="row.visible"/>
</component>
<!-- Customized Required column -->
<component id="requiredColumnValue" type="Block"/>
<component id="requiredSelect" type="PropertySelection">
<binding name="model" value="row.availRequired"/>
<binding name="value" value="row.required"/>
</component>
<!-- Customized Parameter column -->
<component id="parameterTable" type="contrib:TableView">
<binding name="source" value="paramColumns"/>
<binding name="columns" value="literal:!deleteActions:
:deleteActions, !parameter:Parameter:parameter, !value:Value:value"/>
</component>
<component id="parameterTableColumns"
type="contrib:TableColumns"></component>
<component id="parameterTablePages" type="contrib:TablePages"/>
<component id="parameterTableRows" type="contrib:TableRows">
<binding name="row" value="currentEntry"/> <!-- The value
object of the current row being rendered -->
</component>
<component id="parameterTableValues" type="contrib:TableValues"/>
<component id="deleteActionsColumnValue" type="Block"/>
<component id="paramDeleteColumn" type="ImageSubmit">
<binding name="listener" value="listener:doDeleteParamColumn"/>
<binding name="parameters" value="currentEntry"/>
<binding name="image" value="ognl:
components.reportMapAssets.assets.deleteAction"/>
<binding name="alt" value="literal:Delete Report Map"/>
</component>