Re: fr:datatable funnies

Posted by alex sharaz-3 on
URL: https://discuss.orbeon.com/fr-datatable-funnies-tp3258180p3260507.html

Fixed

<xforms:setvalue ref="instance('status')/message"  
value="instance('netdev-instance')/radius_devices/
radius_client[index(usersRepeat) + ($fr-dt-page - 1)*40]/mac_address"/>

Works
A


On 3 Feb 2011, at 13:21, alex sharaz wrote:

> Hi,
> I''ve been moving some of my xforms apps over to using datatables  
> with sortable columns and am having problems with setting up a  
> "delete"  button in a data table row in that it looks as if I'm  
> deleting the wrong item from the back end database.
>
> In my app I'm managing  a number of network devices identified by  
> their mac address
> <netdev>
> ....
> <radius_devices>
>    <radius_client>
>        <mac_address>dd-ee-ff-cc-aa-bb</mac_address>
>        <registering_user_name>ccsas</registering_user_name>
>        <date_added>2011-02-02T17:08:38.000</date_added>
>    </radius_client>
>    <radius_client>
>        <mac_address>aa-bb-cc-dd-ee-ee</mac_address>
>        <registering_user_name>ccsas</registering_user_name>
>        <date_added>2011-02-02T17:20:07.000</date_added>
>    </radius_client>
> ........
> </radius_devices>
> ..
> </netdev>
>
> in my view.xsl I've got
>
> ....
> <fr:datatable paginated="true" rowsPerPage="40" scrollable="both"  
> width="100%" height="500px">
>             <xhtml:thead>
>                <xhtml:tr>
>                   <xhtml:th/>
>                   <xhtml:th fr:sortable="true"  
> fr:resizeable="true">MAC Address</xhtml:th>
>                   <xhtml:th fr:sortable="true"  
> fr:resizeable="true">When added</xhtml:th>
>                   <xhtml:th fr:sortable="true"  
> fr:resizeable="true">Registering User</xhtml:th>
>                   <xhtml:th>Action</xhtml:th>
>                </xhtml:tr>
>                </xhtml:thead>
>                <xhtml:tbody>
>            <xforms:repeat nodeset="instance('netdev-instance')/
> radius_devices/radius_client" id="usersRepeat">
>                <xhtml:tr>
>                    <xhtml:td>
>                        <xforms:output value="position() + ($fr-dt-
> page - 1)*40"/>
>                    </xhtml:td>
>                    <xhtml:td>
>                        <xforms:output ref="mac_address"/>
>                    </xhtml:td>
>                    <xhtml:td>
>                        <xforms:output ref="date_added"/>
>                    </xhtml:td>
>                    <xhtml:td>
>                        <xhtml:center>
>                        <xforms:output ref="registering_user_name"/>
>                        </xhtml:center>
>                    </xhtml:td>
>                    <xhtml:td>
>                        <xforms:trigger>
>                            <xforms:label>Remove</xforms:label>
>                            <xforms:action ev:event="DOMActivate">
>                                <xforms:setvalue  
> ref="instance('status')/message" value="instance('netdev-instance')/
> radius_devices/radius_client[position() + ($fr-dt-page - 1)*40]/
> mac_address"/>
>                                <!-- <xforms:setvalue  
> ref="instance('delete-instance')/mac_address" value="mac_address"/>  
> -->
>                                <xforms:setvalue  
> ref="instance('delete-instance')/mac_address"  
> value="instance('netdev-instance')/radius_devices/
> radius_client[position() + ($fr-dt-page -1)*40]/mac_address"/>
>                                <xforms:send submission="delete-
> submission"/>
>                            </xforms:action>
>                        </xforms:trigger>
>                    </xhtml:td>
>                </xhtml:tr>
>            </xforms:repeat>
>                </xhtml:tbody>
>        </fr:datatable>
>
> When i view the page, I get a line/item count in the 1st column and  
> the last column has a Remove button that should delete the entry  
> from the back end database specified by the mac address. The  
> "position() + ($fr-dt-page - 1)*40 " ( assuming 40 rows per page)  
> statement should let me copy the correct mac address into the delete-
> instance so I can go and delete it.
>
>
> It certainly works when I've got less than 1 page of data, but what  
> happens if I've got more than one page and I change the sort order  
> of the table based upon one of the columns? I've got another app  
> with more than 1 page full of data that I rolled the above format  
> out into and I'm fairly sure that sorting the datatable contents and  
> then clicking on a delete icon deleted a different item to the one I  
> selected.
>
> Have I got the position() + ($fr-dt-page - 1)*40 portion right?
>
> Rgds
> Alex
>
>
>
>
>
>
>
>
> --
> You receive this message as a subscriber of the [hidden email]  
> mailing list.
> To unsubscribe: mailto:[hidden email]
> For general help: mailto:[hidden email]?subject=help
> OW2 mailing lists service home page: http://www.ow2.org/wws


--
You receive this message as a subscriber of the [hidden email] mailing list.
To unsubscribe: mailto:[hidden email]
For general help: mailto:[hidden email]?subject=help
OW2 mailing lists service home page: http://www.ow2.org/wws