I have a repeat control in a custom control. do you know if it is possible to access the values programmatically in the repeat control from an xpage?
Let's say my repeat control is looping a view and I want from my xPage return the title of one of the documents in the repeat control.
the most logical would be to navigate down i.e: getComponent("myCustomControl").getComponent("myrepeat").getFirst().. etc but it does not seem to work that way.
Have you tried something like this (computed dynamically): var items = getComponent("myrepeat").getFacetsAndChildren(); // returns an Iterator
var item; while( items.hasNext() ){ item = items.next(); /* Test to see if item is the component type you're looking for -> fetch the value/etc */ }
To find the correct datatype (using typeof), you can use a "debug function". I send a mail to myself when I debug. It's probably not the most effective debug-method, but it works ok..
thanks, don't really know how to get the value though, there must be a simpler way.
well, I hope all developers out there understand the consequence of putting controls inside a custom control. you will have a hard time accessing its values from outside the CC.
I have blogged about this before here (in swedish) http://xpages.notessidan.se/blogg.nsf/xstart.xsp?post=1710D16D064853BEC1257671005134BE
it is easy to access values from a CC to a Xpage, but not the other way around.
I hope IBM will document this strange relation soon.
Hello Tommy,
ReplyDeleteI have a repeat control in a custom control. do you know if it is possible to access the values programmatically in the repeat control from an xpage?
Let's say my repeat control is looping a view and I want from my xPage return the title of one of the documents in the repeat control.
the most logical would be to navigate down i.e:
getComponent("myCustomControl").getComponent("myrepeat").getFirst().. etc but it does not seem to work that way.
Thanks
Thomas
Have you tried something like this (computed dynamically):
ReplyDeletevar items = getComponent("myrepeat").getFacetsAndChildren(); // returns an Iterator
var item;
while( items.hasNext() ){
item = items.next();
/* Test to see if item is the component type you're looking for -> fetch the value/etc */
}
To find the correct datatype (using typeof), you can use a "debug function". I send a mail to myself when I debug. It's probably not the most effective debug-method, but it works ok..
function debug( message ){
var doc:NotesDocument = database.createDocument();
doc.replaceItemValue( 'Form', 'Memo' );
doc.replaceItemValue( 'Subject', 'Debug..' );
doc.replaceItemValue( 'Body', message.toString() );
doc.replaceItemValue( 'SendTo', 'mail@domain.com' );
doc.send()
}
E.g. debug( typeof getComponent('someId') );
thanks, don't really know how to get the value though, there must be a simpler way.
ReplyDeletewell, I hope all developers out there understand the consequence of putting controls inside a custom control. you will have a hard time accessing its values from outside the CC.
I have blogged about this before here (in swedish) http://xpages.notessidan.se/blogg.nsf/xstart.xsp?post=1710D16D064853BEC1257671005134BE
it is easy to access values from a CC to a Xpage, but not the other way around.
I hope IBM will document this strange relation soon.