2011-04-08 3 views
0

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

ответ

1

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

<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> 

А вот ява класс

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

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

Смежные вопросы