[Laszlo-user] set datapath using an attribute and xpath

Not Zippy notzippy at gmail.com
Thu Jul 5 07:51:00 PDT 2007


No comments at all ?

On 6/27/07, Not Zippy <notzippy at gmail.com> wrote:
> Hi the following code was taken from chapter 34 section 10.2
> I modified the view container for "all phone numbers" to be a class
> and the datapath's xpath to be set via an attribute from that class.
> Now the delete button although it does say the node is deleted does
> not actually remove the view.
> If the xpath (in the class) is set directly to
> "phonebook:/contacts/contact" this works fine.
> Any ideas ? My work around was to create an instance of the datapath
> in the oninit event of "allv" (Checking first to see if the instance
> is a clone) But if this is an error it should be fixed...
>
>
> <canvas height="300" debug="true">
>   <dataset name="phonebook" src="resources/phonebook.xml"/>
>
>   <simplelayout axis="y" spacing="3"/>
>   <view>
>     <view name="newContact" datapath="new:/contact">
>       <text>First Name:</text>
>       <edittext name="firstName" datapath="@firstName" x="80"/>
>       <text y="25">Last Name:</text>
>       <edittext name="lastname" datapath="@lastName" x="80" y="25"/>
>       <text y="50">Phone:</text>
>       <edittext name="phone" datapath="@phone" x="80" y="50"/>
>       <text y="75">Email:</text>
>       <edittext name="email" datapath="@email" x="80" y="75"/>
>       <button width="80" x="200">Add
>         <handler name="onclick">
>           parent.datapath.updateData();
>           var dp= phonebook.getPointer();
>           dp.selectChild();
>           dp.addNodeFromPointer(parent.datapath);
>           parent.setDatapath("new:/contact");
>         </handler>
>       </button>
>     </view>
>   </view>
>   <button text="Delete selected">
>     <handler name="onclick"><![CDATA[
> Debug.write(all.nodes.length,all.clones[0])
> Debug.write(all.clones[0].datapath.deleteNode())
> //      for (var c = 0; c < all.nodes.length; ++c)
> //        with (all.clones[c]) {
> //          if (datapath.xpathQuery('@checked') == true)  {
> //            datapath.deleteNode()
> //            c--
> //          }
> //        }
> ]]>
>     </handler>
>   </button>
>
>   <class name="allv">
>     <attribute name="myPath" type="string" value="false"/>
>     <datapath xpath="${parent.myPath}" pooling="true"/>
>     <view>
>       <simplelayout axis="x"/>
>       <checkbox width="30" datapath="@checked">
>         <handler name="onvalue">
>           datapath.updateData()
>         </handler>
>         <method name="updateData">
>           return this.value
>         </method>
>         <method name="applyData" args="d">
>           setValue(d)
>         </method>
>       </checkbox>
>       <text datapath="@firstName"/>
>       <text datapath="@lastName"/>
>       <text datapath="@phone"/>
>       <text datapath="@email"/>
>     </view>
>   </class>
>   <allv name="all" myPath="phonebook:/contacts/contact"/>
> </canvas>
>


More information about the Laszlo-user mailing list