[Laszlo-user] Data Manipulation Confusion
James Howe
openlaszlo at wingspread.imap-mail.com
Wed Apr 12 15:28:49 EDT 2006
Actually I just looked again and the setPointer method *is* mentioned in
the hierarchy of LzDatapath in the LZ Reference documentation. I just
overlooked it (several times).
On Wed, 12 Apr 2006 15:18:45 -0400, James Howe
<openlaszlo at wingspread.imap-mail.com> wrote:
> Thanks. That did the trick. The one thing I had been missing was the
> 'setPointer' method on LzDatapath. I was looking at the reference
> documentation for LzDatapath and I did not see any reference to a
> 'setPointer' method. It's not listed as one of the methods inherited
> from LzDatapointer. The reference documentation for LzDatapointer does
> contain a description for setPointer. What had been confusing me was
> that I
> wasn't seeing a method which would let me change things based on a data
> node. The setPointer method was what I had missed.
>
> Thanks again and I think I'll file a documentation error report on the
> setPointer thing.
>
> On Wed, 12 Apr 2006 12:09:01 -0400, Adam Wolff <adam at laszlosystems.com>
> wrote:
>
>> Here's the general approach you want to take.
>>
>> What you want to do is to hand your editor a LzDataElement that is
>> cloned
>> from the template. Note that this node doesn't need to be part of a
>> dataset; you can hand an xml node directly to a datapath that you've
>> declared
>>
>> <class name="editor" extends="window">
>> <!-- be sure to create a datapath, since we're not going to use
>> xpath
>> for databinding here -->
>> <datapath/>
>>
>>
>> var newnode = template.getFirstChild().getFirstChild().cloneNode( true
>> );
>>
>> editor.datapath.setPointer( newnode );
>> //user fills out form
>> ....
>>
>> //when user clicks ok
>> editor.datapath.updateData();
>> ds1.getFirstChild().appendChild( editor.datapath.p );
>>
>> Hope this helps.
>>
>> A
>>
>> On Apr 11, James Howe wrote:
>>
>>> I've been working on a data related problem for the last few days which
>>> really has me confused. I must be missing something. I'm trying to do
>>> something very simple. I have two XML datasets:
>>>
>>> <dataset name="ds1">
>>> <items>
>>> <item name="foo" address="bar"/>
>>> </items>
>>> </dataset>
>>>
>>> <dataset name="template">
>>> <items>
>>> <item name="" address=""/>
>>> </item>
>>> </dataset>
>>>
>>> I have a simple editor which is bound to ds1 with a datapath like this:
>>>
>>> datapath="ds1:/items/item"
>>>
>>> The user can change things in the editor and save them. They can also
>>> select 'New' to start again. What I've been trying to figure out is
>>> how
>>> to clone the item element from my template dataset and use it to
>>> replace
>>> the edited value found in ds1. Looking in the documentation I can see
>>> how
>>> I could add the template item to ds1 and then delete the original node
>>> from ds1 using the addNodeFromPointer, but then if the user edits the
>>> values, the values in my template are disturbed. What I want to do is
>>> add
>>> a deep clone of my template node to the ds1 dataset so that if/when it
>>> gets edited, my template remains unaffected.
>>>
>>> What am I missing? I can find the node I'm interested in by doing
>>> xpathQueries. I can clone the LzDataElement returned from the
>>> xpathQuery. Once I have that, I don't see how I can add that element
>>> as a
>>> node in my ds1 dataset.
>>>
>>> Any help on this would be greatly appreciated.
>>>
>>> Thanks!
>>>
>>>
>
>
>
--
James Howe
More information about the Laszlo-user
mailing list