Off the top of my head something like...

<fd:action id="add_items" command="add_items">
<fd:on-action>
<fd:javascript>
var widget = event.source;
var row = widget.parent;
var repeater = row.parent;
// Add the first row
repeater.addRow();
// Get number of extra rows to add
var num_rows_wid = row.lookupWidget("num_rows");
var num_rows = num_rows_wid.getValue();
// Add the extra rows
for (var i=0;i &lt; num_rows;i++) {
repeater.addRow();
}
</fd:javascript>
</fd:on-action>
</fd:action>

This is for adding rows at the end of the repeater - if you want to insert them at a certain position it would be something like...

<fd:action id="insert_items" command="insert_items">
<fd:on-action>
<fd:javascript>
var widget = event.source;
var row = widget.parent;
var repeater = row.parent;
// Insert the first row
repeater.addRow(repeater.indexOf(row) + 1);
// Get number of extra rows to insert
var num_rows_wid = row.lookupWidget("num_rows");
var num_rows = num_rows_wid.getValue();
// Insert the extra rows
for (var i=0;i &lt; num_rows;i++) {
repeater.addRow(repeater.indexOf(row) + 1);
}
</fd:javascript>
</fd:on-action>
</fd:action>

See the Repeater JavaDoc [1] for more info...

Robin

1. http://cocoon.apache.org/2.1/apidocs/org/apache/cocoon/forms/formmodel/Repeater.html



On 20 Nov 2005, at 15:40, Derek Hohls wrote:

<x-tad-bigger>Perhaps, while we are on the subject - is it possible to</x-tad-bigger>
<x-tad-bigger>have a similar type of code that, when a row is inserted,</x-tad-bigger>
<x-tad-bigger>also inserts additional rows... ideally the number of rows</x-tad-bigger>
<x-tad-bigger>inserted could be controlled by the value of another widget?</x-tad-bigger>

<x-tad-bigger>>>> [EMAIL PROTECTED] 2005/11/20 04:54:58 AM >>></x-tad-bigger>
<x-tad-bigger>Thanks a lot !</x-tad-bigger>
<x-tad-bigger>It works perfectly :)</x-tad-bigger>

<x-tad-bigger>Marc</x-tad-bigger>

<x-tad-bigger>2005/11/17, Robin Wyles <</x-tad-bigger><x-tad-bigger>[EMAIL PROTECTED]</x-tad-bigger><x-tad-bigger>>: Marc,</x-tad-bigger>
<x-tad-bigger>Instead of using a fd:row-action why not use a fd:action such as:</x-tad-bigger>

<x-tad-bigger><fd:action id="delete_item" command="delete_item"></x-tad-bigger>
<x-tad-bigger>        <fd:on-action></x-tad-bigger>
<x-tad-bigger>                <fd:javascript></x-tad-bigger>
<x-tad-bigger>                         var widget = event.source;</x-tad-bigger>
<x-tad-bigger>                         var row = widget.parent;</x-tad-bigger>
<x-tad-bigger>                         var repeater = row.parent;</x-tad-bigger>
<x-tad-bigger>                         repeater.removeRow(repeater.indexOf(row));</x-tad-bigger>
<x-tad-bigger>                         // Your extra code here...</x-tad-bigger>
<x-tad-bigger>                </fd:javascript></x-tad-bigger>
<x-tad-bigger>        </fd:on-action></x-tad-bigger>
<x-tad-bigger></fd:action></x-tad-bigger>

<x-tad-bigger>Hope this helps...</x-tad-bigger>

<x-tad-bigger>Robin</x-tad-bigger>


<x-tad-bigger>On 16 Nov 2005, at 11:01, Marc Salvetti wrote: </x-tad-bigger>

<x-tad-bigger>> Hello,</x-tad-bigger>
<x-tad-bigger>></x-tad-bigger>
<x-tad-bigger>>  I have a cart displaying an invoice on top of the page and a cforms</x-tad-bigger>
<x-tad-bigger>> with a repeater displaying the products at the bottom of the page.</x-tad-bigger>
<x-tad-bigger>>  I need to update the invoice when a row is deleted in the repeater </x-tad-bigger>
<x-tad-bigger>>  The calculation of the invoice is done on the server and need to read</x-tad-bigger>
<x-tad-bigger>> from the dom binded to the form</x-tad-bigger>
<x-tad-bigger>>  So i need to do a form.save(doc) to update the dom tree, then pass</x-tad-bigger>
<x-tad-bigger>> this dom tree to the invoicing fonction. </x-tad-bigger>
<x-tad-bigger>></x-tad-bigger>
<x-tad-bigger>>  Now my problem is that for the row-delete action, the on-action</x-tad-bigger>
<x-tad-bigger>> handler is triggered *before* the row is removed, so calling</x-tad-bigger>
<x-tad-bigger>> form.save() in this handler is useless for me.</x-tad-bigger>
<x-tad-bigger>></x-tad-bigger>
<x-tad-bigger>>  Does someone now how to execute some code after the row is deleted ? </x-tad-bigger>
<x-tad-bigger>></x-tad-bigger>
<x-tad-bigger>>  Thanks,</x-tad-bigger>
<x-tad-bigger>></x-tad-bigger>
<x-tad-bigger>>  Marc</x-tad-bigger>


<x-tad-bigger>---------------------------------------------------------------------</x-tad-bigger>
<x-tad-bigger>To unsubscribe, e-mail: </x-tad-bigger><x-tad-bigger>[EMAIL PROTECTED]</x-tad-bigger>
<x-tad-bigger>For additional commands, e-mail: </x-tad-bigger><x-tad-bigger>[EMAIL PROTECTED]</x-tad-bigger>



<x-tad-smaller>-- </x-tad-smaller>
<x-tad-smaller>This message is subject to the CSIR's copyright, terms and conditions and e-mail legal notice. </x-tad-smaller>
<x-tad-smaller>Views expressed herein do not necessarily represent the views of the CSIR.</x-tad-smaller>
<x-tad-smaller>CSIR E-mail Legal Notice</x-tad-smaller><x-tad-smaller> </x-tad-smaller>
<x-tad-smaller>CSIR Copyright, Terms and Conditions</x-tad-smaller><x-tad-smaller> </x-tad-smaller>
<x-tad-smaller>For electronic copies of the CSIR Copyright, Terms and Conditions and the CSIR Legal Notice</x-tad-smaller>
<x-tad-smaller>send a blank message with "REQUEST LEGAL" in the subject line to </x-tad-smaller><x-tad-smaller>CSIR HelpDesk</x-tad-smaller><x-tad-smaller> </x-tad-smaller>
<x-tad-smaller>This message has been scanned for viruses and dangerous content by </x-tad-smaller><x-tad-smaller>MailScanner</x-tad-smaller><x-tad-smaller>, </x-tad-smaller>
<x-tad-smaller>and is believed to be clean. MailScanner thanks </x-tad-smaller><x-tad-smaller>Transtec Computers</x-tad-smaller><x-tad-smaller> for their support.</x-tad-smaller>
<x-tad-bigger> </x-tad-bigger>