ZK拖放和数据绑定

时间:2013-05-13 14:01:38

标签: java web zk

我遇到了ZK绑定和拖放功能的问题。 我有两个列表框:

<listbox id="left" width="100%" model="@load(vm.contacts)" height="200px" draggable="true" droppable="true" onDrop="@command('move')">                      
    <listhead>
        <listheader label="Contatto" align="center"  />
    </listhead>
    <template name="model" var="contact">
        <listitem value="@bind(contact)" draggable="true" droppable="true" onDrop="@command('move')"> 
           <listcell src="/img/contact-icon_x32.jpg" label="@load(contact.person.surname.concat(' ').concat(contact.person.name))" />
        </listitem>
    </template>
</listbox>
...
<listbox width="100%" id="right" model="@load(vm.contactsQuickKey)" height="250px" draggable="true" droppable="true" onDrop="@command('move')" >
    <listhead>
         <listheader label="Etichetta" align="center"  />
         <listheader label="Contatto" align="center"  />
    </listhead>
    <template name="model" var="contactQuickKey">
         <listitem value="@bind(contactQuickKey)" draggable="true" droppable="true" onDrop="@command('move')">
             <listcell>                                   
                 <textbox width="90%" value="@load(contactQuickKey.label) @save(contactQuickKey.label, before={'move', 'saveData', 'setLeftActivePage'})"/>
             </listcell>
             <listcell src="/img/contact-icon_x32.jpg" label="@load(contactQuickKey.contact.person.surname.concat(' ').concat(contactQuickKey.contact.person.name))" />
         </listitem>
    </template>
</listbox>

如果我在右侧列表框中编辑文本框,然后立即,不点击任何地方,我从左侧拖放一个单元格,我添加的文本消失。 我可以保存文本的唯一方法是使用onchange事件,但它非常重。

修改: 我在这里创建了一个工作演示http://zkfiddle.org/sample/2t6r27o/24-drag-and-drop-test

有人能给我一个更好的解决方案吗?

非常感谢!

我在文本框中添加了“instant =”true“”,这解决了我的问题!

感谢大家对我的帮助!

2 个答案:

答案 0 :(得分:2)

解决方案是将instant="true"放入文本框。这解决了拖放文本修改失败的问题。

答案 1 :(得分:1)

您的问题是,您的文字未加载到服务器端Textbox 您可以在放before={'move'...之前保存,但无法将其加载到
Textbox,这需要一个notifyChange,这是在之前完成的 @command('move')被执行,这是不可能的,zk的cos 执行周期和move导致保存的事实

您可以做的是,从您的数据中手动切换Textbox move命令的vm类。但是弄清楚这可能是一个问题 被拖动的contactQuickKey所属的Textbox实例。

顺便问一下,onChanging的问题在哪里?流量不应该是一个。

修改

由于某种原因,数据未在move命令之前保存,如果是 在拖动之前不会发生另一个用户操作 也许是一个错误?