2014-10-22 65 views
1

我有一個celltable,我試圖實現分頁,但它不工作。我尋找解決方案但沒有取得任何成功。我點擊下一頁,沒有任何反應。我忘了實施一些東西?有人可以幫助我嗎?感謝您的關注!下面,我實現:GWT/GWT Bootstrap - 分頁(SimplePager)

的Java:

 public class TaskPanel extends Composite { 

      private static TaskPanelUiBinder uiBinder = GWT 
        .create(TaskPanelUiBinder.class); 

      interface TaskPanelUiBinder extends UiBinder<Widget, TaskPanel> { 

      } 

      public TaskPanel() { 
       this.tableTask = createTableTask(); 

       //Populate celltable 
       preencheListaTask(); 

       initWidget(uiBinder.createAndBindUi(this)); 
      } 

      @UiField(provided = true) 
      CellTable<Task> tableTask; 

      @UiField 
      AccordionGroup accordionTable; 

      @UiField Button btnRefresh; 

      @UiField SimplePager pager; 

      @UiField FormTaskPanel formTask; 

      List<Task> listTasks = new ArrayList<Task>(); 

      ListDataProvider<Task> tableTaskProvider; 

      public List<Task> getListTasks() { 
       return this.listTasks; 
      } 

      public void setListTasks(List<Task> lista) { 
       this.listTasks = lista; 
      } 

      public TaskPanel getTaskPanel() { 
       return this; 
      } 

      //Create celltable 
      public CellTable<Task> createTableTask() { 
       tableTask = new CellTable<Task>(); 
       tableTask.setPageSize(2); 

       TextColumn<Task> dataInicioColumn = new TextColumn<Task>() { 
        @Override 
        public String getValue(Task task) { 
         return task.getDataInicial(); 
        } 
       }; 
       tableTask.addColumn(dataInicioColumn, "Data Inicio"); 

       TextColumn<Task> dataFinalColumn = new TextColumn<Task>() { 
        @Override 
        public String getValue(Task task) { 
         return task.getDataFinal(); 
        } 
       }; 
       tableTask.addColumn(dataFinalColumn, "Data Final"); 

       TextColumn<Task> descricaoColumn = new TextColumn<Task>() { 
        @Override 
        public String getValue(Task task) { 
         return task.getDescricao(); 
        } 
       }; 
       tableTask.addColumn(descricaoColumn, "Descricao"); 

       TextColumn<Task> categoriaColumn = new TextColumn<Task>() { 
        @Override 
        public String getValue(Task task) { 
         return task.getCategoria(); 
        } 
       }; 
       tableTask.addColumn(categoriaColumn, "Categoria"); 

       TextColumn<Task> prioridadeColumn = new TextColumn<Task>() { 
        @Override 
        public String getValue(Task task) { 
         return task.getPrioridade(); 
        } 
       }; 
       tableTask.addColumn(prioridadeColumn, "Prioridade"); 

       return tableTask; 
      } 

      //Generate a JSON, and I parse for List<Task> to populate celltable 
      public List<Task> preencheListaTask() { 
       final List<Task> lista = new ArrayList<Task>(); 

       String url = "http://127.0.0.1:8888/financecontrol/jsonTableTasks.json"; 

       RequestBuilder builder = new RequestBuilder(RequestBuilder.GET, url); 

       try { 
        Request request = builder.sendRequest(null, new RequestCallback() { 

         public void onError(Request request, Throwable exception) { 
          System.out.println("Error to retrieve JSON"); 
         } 

         @Override 
         public void onResponseReceived(Request arg0, Response response) { 
          if (200 == response.getStatusCode()) { 
           JSONValue value = JSONParser.parse(response.getText()); 

           com.google.gwt.json.client.JSONObject taskObjs = value 
             .isObject(); 

           JSONArray tasksArray = taskObjs.get("tasks").isArray(); 

           if (tasksArray != null) { 
            for (int i = 0; i < tasksArray.size(); i++) { 

             com.google.gwt.json.client.JSONObject taskObj = tasksArray 
               .get(i).isObject(); 

             String id = taskObj.get("ID").isNumber().toString(); 
             String dataInicial = taskObj 
               .get("Data Inicial").isString() 
               .stringValue(); 
             String dataFinal = taskObj.get("Data Final") 
               .isString().stringValue(); 
             String descricao = taskObj.get("Descricao") 
               .isString().stringValue(); 
             String categoria = taskObj.get("Categoria").isString().toString(); 
             String prioridade = taskObj.get("Prioridade").isString().toString(); 

             Task task = new Task(Integer.parseInt(id), 
               dataInicial, dataFinal, 
               descricao, categoria, prioridade); 
             lista.add(task); 
            } 
            setListTasks(lista); 
            System.out.println("JSON retrieve"); 
           } 
           addLinhas(); 
          } else { 
           System.out.println("Couldn't retrieve JSON (" 
             + response.getStatusText() + ")"); 
          } 
         } 

        }); 
       } catch (RequestException e) { 
        System.err.println("Erro cath - " + e.getMessage()); 
       } 

       return lista; 
      } 
      //add rows to celltable 
      public void addLinhas() { 
       this.tableTask.setRowCount(getListTasks().size(), true); 
       this.tableTask.setRowData(0, getListTasks()); 
       tableTask.redraw(); 
       tableTaskProvider = new ListDataProvider<Task>(getListTasks()); 
       tableTaskProvider.addDataDisplay(tableTask); 

       //Pagination 
       SimplePager.Resources pagerResources = GWT.create(SimplePager.Resources.class); 
       pager = new SimplePager(TextLocation.CENTER, pagerResources, false, 0, true); 
       pager.setDisplay(tableTask); 

      } 

      @UiHandler("btnRefresh") 
      public void onClickRefresh(ClickEvent e) { 
       preencheListaTask(); 
      } 

     } 

UiBinder的:

<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent"> 

<ui:style> 
    .formContent { 
     height: 70%; 
    } 

</ui:style> 

<b:Container addStyleNames="{style.formContent}"> 
    <r:FormTaskPanel ui:field="formTask"/> 

    <b:AccordionGroup ui:field="accordionTable" defaultOpen="false" heading="Task List"> 
     <b:CellTable ui:field="tableTask" /> 
     <b:SimplePager ui:field="pager" location="CENTER"/> 
     <b:Button ui:field="btnRefresh" text="Refresh" icon="REFRESH"/> 
    </b:AccordionGroup> 
</b:Container> 

回答

0

你有pager = new SimplePager(...),所以你必須要申報@uiField(provided = true),並將尋呼機聲明/初始化移入createTableTask函數(pager必須在initwidget之前設置)。

+0

謝謝!這項工作。 – 2014-10-29 13:31:40