[Laszlo-user] lz.list and lazy replication: onselect not firing when the list scrolls
P T Withington
ptw at pobox.com
Fri Oct 24 13:52:04 PDT 2008
It's possible this was recently fixed:
http://jira.openlaszlo.org/jira/browse/LPP-2339
On 2008-10-24, at 16:07EDT, Paulo Scardine wrote:
> Hi guys,
>
> I use lz.list frequently. When using a large dataset, I always use
> textlistitem with lazy replication. The problem is that if the list
> has an item selected, and you scroll down the list, the selected
> textlistitem will be reused. This causes some unpleasant/
> inconsistent behavior: another random entry in the list will get
> selected (the one which reuse the same textlistitem from the
> previous selection); list.getSelection() will reflect the new value.
> Automatically selecting another random entry just scrolling down is
> unexpected; also, in this case onselect event will not fire.
>
> I think the behavior I get when using the following hack is more
> consistent with similar widgets from other toolkits:
>
> <class name="xtd_list" extends="list">
> <attribute name="selectedValue" value="null"/>
> <handler name="onselect" args="d">
> this.selectedValue = d.value;
> </handler>
> <method name="getValue">
> return this.selectedValue;
> </method>
> <method name="clearSelection" args="keepSelectedValue">
> super.clearSelection();
> if(!keepSelectedValue) {
> this.selectedValue = null;
> }
> </method>
> </class>
> <class name="xtd_textlistitem" extends="textlistitem">
> <handler name="ondata" args="d">
> if(this.value == parent.selectedValue) {
> parent.select(this);
> } else if(this.selected) {
> parent.clearSelection(true);
> }
> </handler>
> </class>
>
> This makes only works with single selection and if "value" is unique
> for each item, which is almost always true for me, but I'm wondering
> if someone would came up with a more generic or elegant solution.
>
> Thanks in advance,
> --
> Paulo Scardine
>
> <!-- begin testcase -->
> <dataset name="ds">
> <records>
> <record value="1">Value1</record>
> <record value="2">Value1</record>
> <record value="3">Value1</record>
> <record value="4">Value1</record>
> <record value="5">Value1</record>
> <record value="6">Value1</record>
> <record value="7">Value1</record>
> <record value="8">Value1</record>
> <record value="9">Value1</record>
> <record value="10">Value10</record>
> <record value="11">Value11</record>
> <record value="12">Value12</record>
> <record value="13">Value13</record>
> <record value="14">Value14</record>
> <record value="15">Value15</record>
> <record value="16">Value16</record>
> <record value="17">Value17</record>
> <record value="18">Value18</record>
> <record value="19">Value19</record>
> </records>
> </dataset>
> <xtd_list width="200" height="60">
> <xtd_textlistitem textlistitem text="$path{'text()'}"
> value="$path{'@value'}">
> <datapath xpath="local:parent.parent.dscasos:/records/
> record" replication="lazy"/>
> </xtd_textlistitem>
> </xtd_list>
> <!-- end testcase -->
>
More information about the Laszlo-user
mailing list