2011-04-08 10 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

귀하의 경우, 구성 요소 세트보다는 모델에서 주문을 유지하는 것이 좋습니다. 즉, 드래그 앤 드롭이 적용될 때 모델의 순서를 변경해야합니다.