2012-07-26 60 views
0

所以我有這個按鈕提交它有一些功能將執行和選定的複選框需要從列表中刪除。模型正在更新,但pageablelistview不反映在UI +門票上的變化

下面的代碼片段顯示了該按鈕的用法以及我已經做的刪除特定複選框選擇的實現。

 Button resumeDrive = new AjaxButton("resume", driveSearchForm) 
     /** 
     * 
     */ 
     private static final long serialVersionUID = -7016746377299867219L; 

     @Override 
     protected void onSubmit(AjaxRequestTarget target, Form<?> form) { 
      log.info("envoking resume"); 
      target.addComponent(form); 
      try { 

       List<DashboardModel> list = (List<DashboardModel>) group.getDefaultModelObject(); 
       log.info("drives data : " + list); 
       if (list != null) { 
        List<Long> drives = new ArrayList<Long>(); 
        List<DashboardModel> drivesToRemove = new ArrayList<DashboardModel>(); 
        for (DashboardModel drive : list) { 
         drives.add(drive.getExecutionUnitId()); 

         drivesToRemove.add(drive); 
         log.info("drivesToRemove :" + drivesToRemove); 
        } 
        log.info("selected drive: " + drives); 
        if (drives.size() > 0) { 
         log.info("Execution Ids to resume : " + drives); 

         driveResumeService.resumeDrives(drives); 
         drivesData.removeAll(drivesToRemove); 
         log.info("drivesdata :" + drivesData); 

         warn("Execution Ids to resume : " + drives); 
        } else { 
         warn("No drives selected for resuming."); 
        } 
       } else { 
        info("No drives to resume."); 
       } 
      } catch (Exception e) { 
       warn("Failed to resume jobs. " + e.getMessage()); 
       log.info("Failed to resume jobs", e); 
      } 
      target.addComponent(group); 
     } 
     @Override 
     protected void onError(AjaxRequestTarget target, Form<?> form) { 
      target.addComponent(form); 
     } 
      driveSearchForm.add(resumeDrive); 
    resumeDrive.setDefaultFormProcessing(true); 
    resumeDrive.add(new AjaxFormValidatingBehavior(driveSearchForm, "onClick")); 

--> my model returns this driveData. 
    ---> I'm sticking the pageableListView code also alongside. 

      private CheckGroup<DashboardModel> group; 
      group = new CheckGroup<DashboardModel>("group", new ArrayList<DashboardModel>()); 
    driveSearchForm.add(group); 
    group.add(new CheckGroupSelector("allSelected")); 
    group.setOutputMarkupId(true); 

    pageableListView = new PageableListView<DashboardModel>("searchResults", driveDataModel, 10) { 
     private static final long serialVersionUID = 1L; 

     @Override 
     protected void populateItem(ListItem<DashboardModel> item) { 
      item.add(new Check("check", item.getModel())); 
      item.add(new Label("name", item.getModelObject().getName())); 
      item.add(new Label("status", item.getModelObject().getStatus().toString())); 
      item.add(new Label("driveUrl", item.getModelObject().getDriveURL())); 
     } 

    }; 
    pageableListView.setRenderBodyOnly(false); 
    pageableListView.setReuseItems(true); 
    group.add(pageableListView); 
    group.add(new PagingNavigator("navigator", pageableListView)); 

所以我發現我的模型得到更新,但相同的是沒有發生在用戶界面上即 我想選擇的複選框,從刷新列表中刪除..... 請建議... ...

回答

1

ListView#setReuseItems()

但是如果你修改列表視圖模型對象,比你必須手動爲了重建listItems中調用listView.removeAll()。

所以,如果reuseItems是真的,那麼在您更改列表視圖模型電話removeAll點。

+0

哦,明白了......感謝您的早期回覆!! ...... – chetan 2012-07-26 15:08:20