You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@cocoon.apache.org by "Gustavo N. Fernandes" <gu...@terra.com.br> on 2006/08/29 02:06:27 UTC

Search screen

Hi,

How can I populate a repeater when some event occurs in the form? Imagine I
have a drop-down (filter) that when changed causes the repeater to be
populated based on the drop-down's choice:

Form-definition:
----------------

<fd:field id="list">
	<fd:selection-list src="cocoon:/groups"/>	
	<fd:datatype base="string"/>	
		<fd:on-value-changed>
			<fd:javascript>
				upd(event);
			</fd:javascript>
		</fd:on-value-changed>	
</fd:field>
<fd:repeater id="rep">
			<fd:label> Comments </fd:label>
			<fd:widgets>
				<fd:output id="id">
					<fd:datatype base="string">
					  </fd:datatype>
				</fd:output>
				...
			</fd:widgets>
		</fd:repeater>

Flow:
----
// Initialize the form and display (empty at first time)
function registration(form) {	
	var form = new Form("formdefinition.xml");
	form.createBinding("formbinding.xml");
	form.showForm("form-display-pipeline");
}


// Will populate the repeater when selection-list change
function upd(event) {
     var value = event.source.value;
     var form = event.source.form;
     var document = loadDocument("document.xml");
     form.load(document);
     return false;	
}


That gives an error:
org.mozilla.javascript.EcmaError: load is not a function.

I can successfuly alter state and value of other widgets in the 'upd'
function. I am using ajax.


TIA.

-- 
No virus found in this outgoing message.
Checked by AVG Free Edition.
Version: 7.1.405 / Virus Database: 268.11.6/428 - Release Date: 25/8/2006
 


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@cocoon.apache.org
For additional commands, e-mail: users-help@cocoon.apache.org


RES: Search screen

Posted by gnf <gu...@terra.com.br>.
Ok, let me refrase that...

Most of the forms samples contained in Cocoon are about:
1. Load something in the form from a Bean or XML
2. Display the form with the content loaded
3. Edit the form (add or remove rows)
4. Submit the form and display a success page

What I trying to achieve is:
1. Display the form empty
2. Some event inside the form triggers a javascript function (a combo, or a
button...)
3. Inside that function I want to load something from the XML inside the
formĀ“s repeater, *without* a full page reload (ajax=true)

Every time I try to manipulate the form object inside the function, I
receive errors as 

org.mozilla.javascript.EcmaError: load is not a function.
org.mozilla.javascript.EcmaError: createBinding is not a function.

What is the required way of doing a ajax 'search and populate' form screen ?

I am using cocoon 2.1.9.


-----Mensagem original-----
De: Gustavo N. Fernandes [mailto:gustavonf@terra.com.br] 
Enviada em: segunda-feira, 28 de agosto de 2006 21:06
Para: users@cocoon.apache.org
Assunto: Search screen

Hi,

How can I populate a repeater when some event occurs in the form? Imagine I
have a drop-down (filter) that when changed causes the repeater to be
populated based on the drop-down's choice:

Form-definition:
----------------

<fd:field id="list">
	<fd:selection-list src="cocoon:/groups"/>	
	<fd:datatype base="string"/>	
		<fd:on-value-changed>
			<fd:javascript>
				upd(event);
			</fd:javascript>
		</fd:on-value-changed>	
</fd:field>
<fd:repeater id="rep">
			<fd:label> Comments </fd:label>
			<fd:widgets>
				<fd:output id="id">
					<fd:datatype base="string">
					  </fd:datatype>
				</fd:output>
				...
			</fd:widgets>
		</fd:repeater>

Flow:
----
// Initialize the form and display (empty at first time)
function registration(form) {	
	var form = new Form("formdefinition.xml");
	form.createBinding("formbinding.xml");
	form.showForm("form-display-pipeline");
}


// Will populate the repeater when selection-list change
function upd(event) {
     var value = event.source.value;
     var form = event.source.form;
     var document = loadDocument("document.xml");
     form.load(document);
     return false;	
}


That gives an error:
org.mozilla.javascript.EcmaError: load is not a function.

I can successfuly alter state and value of other widgets in the 'upd'
function. I am using ajax.


TIA.

-- 
No virus found in this outgoing message.
Checked by AVG Free Edition.
Version: 7.1.405 / Virus Database: 268.11.6/428 - Release Date: 25/8/2006
 


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@cocoon.apache.org
For additional commands, e-mail: users-help@cocoon.apache.org




-- 
No virus found in this incoming message.
Checked by AVG Free Edition.
Version: 7.1.405 / Virus Database: 268.11.6/428 - Release Date: 25/8/2006


-- 
No virus found in this incoming message.
Checked by AVG Free Edition.
Version: 7.1.405 / Virus Database: 268.11.6/428 - Release Date: 25/8/2006
 

-- 
No virus found in this outgoing message.
Checked by AVG Free Edition.
Version: 7.1.405 / Virus Database: 268.11.7/434 - Release Date: 30/8/2006
 


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@cocoon.apache.org
For additional commands, e-mail: users-help@cocoon.apache.org