On Thu, 2003-11-27 at 13:37, Jeremy Quinn wrote: > On 26 Nov 2003, at 18:19, Bruno Dumon wrote: > > > > >> > >> How do I call delete on my bean? > >> I am using Hibernate, it is not enough to just remove the item from > >> the Collection, I also need to call session.delete (resource) (or more > >> accurately ResourcePeer.delete (session, resource), so it is wrapped > >> in > >> a Transaction) on the deletee. > > > > Simply execute this code from an event-handler attached to the button? > > > > Now I am having a problem identifying which row is being deleted. > > in my Model : > > <wd:repeater id="resources"> > <wd:widgets> > <wd:output id="id"> > <wd:datatype base="long"/> > </wd:output> > . . . > <wd:row-action id="delete" action-command="delete"> > <wd:label><i18n:text > i18n:catalogue="local">label.delete.resource</i18n:text></wd:label> > <wd:hint><i18n:text > i18n:catalogue="local">hint.delete.resource</i18n:text></wd:hint> > <wd:on-activate> > <javascript>deleteRow (event)</javascript> > </wd:on-activate> > </wd:row-action> > </wd:widgets> > </wd:repeater> > > in my Binding : > > <wb:repeater id="resources" > parent-path="." > row-path="resources" > unique-row-id="id" > unique-path="id"> > > <wb:on-bind> > <wb:value id="id" path="id"/> > . . . > </wb:on-bind> > > <wb:on-insert-row> > <wb:insert-bean > classname="uk.co.my.bean.Resource" > addmethod="addResource"/> > </wb:on-insert-row> > > <wb:on-delete-row> > <wb:delete-node/> > </wb:on-delete-row> > > </wb:repeater> > > in my FløwScript : > > // event handler called by Woody to remove a Resource Row from the Album > function deleteRow (event) { > // get the ID of the Resource that is being deleted, so I can remove > it from the Persistor > cocoon.log.info ("User deleting Row :" + event.getSourceWidget > ().getParent ().getId ());
I don't think this will return the id you expect. The id returned by getId() is the id of the widget as defined in the form definition, not to be confused with the unique-row-id from the binding, which just points to a widget who's value is used as unique row identification. > } > > this shows '-1' ( !!!! ) > Has it been deleted before this handler is called? > > If I go :event.getSourceWidget ().getId () I get 'delete'. > > If I go :event.getSourceWidget ().getParent ().getId () I get '-1'. > > If I go :event.getSourceWidget ().getParent ().getParent ().getId () I > get 'resources'. Saw your messages on the dev list (which are still valid), but you could do this as follows: event.getSourceWidget().getParent().getWidget("my-id-widget").getValue() where "my-id-widget" is the widget containing your id (assuming that's what you want). the getParent() call gives you the current row in the repeater (which is in fact also a widget, though it's not visible in the form definition, it's automatically created for you), of which you request another child widget using the getWidget() call. -- Bruno Dumon http://outerthought.org/ Outerthought - Open Source, Java & XML Competence Support Center [EMAIL PROTECTED] [EMAIL PROTECTED] --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]