Проблема перетаскивания ZK - PullRequest
0 голосов
/ 08 апреля 2011

Я не могу получить новый заказанный список моделей из списка после выполнения операции перетаскивания.Я вижу, что он упорядочен, но когда я пытаюсь получить новый список товаров, он возвращает мне исходный список.Есть ли способ получить listmodel, как указано на экране?

Ответы [ 2 ]

1 голос
/ 15 апреля 2011

Я решил это, сделав ручную сортировку в списке моделей. Я понял, что при использовании перетаскивания это только визуально изменяет порядок элементов списка. вот мой рабочий код

<listbox id="listBox_Action"
                                        fixedLayout="true" width="300px"
                                        model="@{mainCtrl.comboModelAction}"
                                        selectedItem="@{mainCtrl.selectedAction}" mold="paging"
                                        pageSize="25" forward="onSelect=onSelectedPanelChange()"
                                        onSelect="bd.value=self.selectedItem.label;bd.close();">


                                        <listhead>
                                            <listheader
                                                label="${c:l('SYSADM.SelectAction.combo.ActionName')}" />

                                        </listhead>
                                        <listitem
                                            self="@{each=ACTION_LIST}">
                                            <listcell
                                                label="@{ACTION_LIST.action_func}"
                                                value="@{ACTION_LIST.action_func}" />

                                        </listitem>
                                    </listbox>

А вот класс java

public void onChangeList(ForwardEvent event) {
        DropEvent dropEvent = (DropEvent) event.getOrigin();

        // Listitem li = (Listitem)event.getTarget();
        // Listbox lb =(Listbox)event.getOrigin().getTarget();

        int indexOfdraggedListitem =0;
        int indexOfdroppedListitem =0;

        Listitem draggedListitem = (Listitem) dropEvent.getDragged();

        if (dropEvent.getTarget() instanceof Listitem) {

            droppedListitem = (Listitem) dropEvent.getTarget();

            indexOfdraggedListitem = left.getIndexOfItem(draggedListitem);

            indexOfdroppedListitem = left.getIndexOfItem(droppedListitem);

            if (indexOfdraggedListitem > indexOfdroppedListitem) {
                droppedListitem.getParent().insertBefore(draggedListitem, droppedListitem);

                draggableListLeft.add(indexOfdroppedListitem, draggableListLeft.get(indexOfdraggedListitem));

                // Collections.swap(draggableListLeft, indexOfdraggedListitem,
                // indexOfdroppedListitem);

                draggableListLeft.remove(indexOfdraggedListitem + 1);
                // draggableListLeft.add(indexOfdroppedListitem + 1,
                // temp_Fie_Dif_Request_Set);

            } else {

                droppedListitem.getParent().insertBefore(draggedListitem, droppedListitem);

                draggableListLeft.add(indexOfdroppedListitem, draggableListLeft.get(indexOfdraggedListitem));

                draggableListLeft.remove(indexOfdraggedListitem);

            }

        } else   {
            indexOfdraggedListitem = left.getIndexOfItem(draggedListitem);
            left.appendChild(draggedListitem);
            draggableListLeft.add(draggableListLeft.get(indexOfdraggedListitem));
            draggableListLeft.remove(indexOfdraggedListitem);
        }


    }
0 голосов
/ 14 апреля 2011

В вашем случае вам лучше поддерживать порядок в модели, а не в наборе компонентов.Другими словами, вы должны изменить порядок в модели, когда на перетаскивание влияет.

...