Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在CellTable中添加带排序的行_Java_Gwt2 - Fatal编程技术网

Java 在CellTable中添加带排序的行

Java 在CellTable中添加带排序的行,java,gwt2,Java,Gwt2,我想在添加新内容时对CellTable中的行进行排序 要标记UI,请使用UIBinder: <g:HTMLPanel> <c:CellTable pageSize='100' ui:field='myTable'/> <c:SimplePager ui:field='myPager' location='CENTER'/> </g:HTMLPanel> 如果使用这种方法,则会在表的末尾添加新行 我需要在添加行时自动排序 如何操作?在创建提供者后立

我想在添加新内容时对CellTable中的行进行排序

要标记UI,请使用UIBinder:

<g:HTMLPanel>
<c:CellTable pageSize='100' ui:field='myTable'/>
<c:SimplePager ui:field='myPager' location='CENTER'/>
</g:HTMLPanel>
如果使用这种方法,则会在表的末尾添加新行

我需要在添加行时自动排序


如何操作?

在创建提供者后立即创建排序处理程序:

ListHandler<myDTO> sortHandler = new ListHandler<myDTO>(provider.getList());
myTable.addColumnSortHandler(sortHandler);
ListHandler sortHandler=新的ListHandler(provider.getList());
myTable.addColumnSortHandler(sortHandler);
然后,对于要排序的每一列,设置一个比较器并将该列添加到排序列表中,例如:

sortHandler.setComparator(column1, new Comparator<myDTO>() {
    public int compare(myDTO dto1, myDTO dto2) {
        // This is an example, how you compare them depends on the context
        return dto1.getSomeData1().compareTo(dto2.getSomeData1());
    }
});

myTable.getColumnSortList().push(column1);
sortHandler.setComparator(第1列,new Comparator(){
公共整数比较(myDTO dto1,myDTO dto2){
//这是一个例子,如何比较它们取决于上下文
返回dto1.getSomeData1().compareTo(dto2.getSomeData1());
}
});
myTable.getColumnSortList().push(column1);

您可以多次调用
push()
方法以按多列排序。您也可以对同一列调用两次,以反转其排序顺序(升序/降序)。

请告诉我,在设置处理程序时,我需要为每一列调用push()。@Ashish您需要调用
push()
来激活该列的排序。可以将其视为以编程方式“推送”列标题。@DavidLevesque,谢谢您的回复,我按照您的代码进行操作,但仍然无法对表中的数据进行排序。@Ashish如果不查看您的代码,我真的无法帮到您。也许你可以用更新的代码问一个新问题。@DavidLevesque,我在这里问过这个问题
Column<myDTO, String> column1 = new Column<myDTO, String>(new TextCell()) {
   @Override
   public String getValue(myDTO data) {
      return data.getSomeData1();
   }
};

Column<myDTO, String> column2 = new Column<myDTO, String>(new TextCell()) {
   @Override
   public String getValue(myDTO data) {
      return data.getSomeData2();
   }
};
...
Column<myDTO, String> columnN = new Column<myDTO, String>(new TextCell()) {
   @Override
   public String getValue(myDTO data) {
      return data.getSomeDataN();
   }
};      

myTable.addColumn(column1, "name of column1");
myTable.addColumn(column2, "name of column2");
...
myTable.addColumn(columnN, "name of columnN");
AsyncDataProvider<myDTO> provider = new AsyncDataProvider<myDTO>() {
   @Override
   // is called when the table requests a new range of data 
   protected void onRangeChanged(HasData<myDTO> display) {

      final int start = display.getVisibleRange().getStart();
      final int lenght = display.getVisibleRange().getLength();

       myService.findAll(new AsyncCallback<List<myDTO>>() {
          public void onFailure(Throwable caught) {
             // exception handling here
          }

          public void onSuccess(List<myDTO> data) {
             updateRowCount(data.size(), true);
             updateRowData(0, data);
          }
      });
   }
 };

 provider.addDataDisplay(myTable);
ListHandler<myDTO> sortHandler = new ListHandler<myDTO>(provider.getList());
myTable.addColumnSortHandler(sortHandler);
sortHandler.setComparator(column1, new Comparator<myDTO>() {
    public int compare(myDTO dto1, myDTO dto2) {
        // This is an example, how you compare them depends on the context
        return dto1.getSomeData1().compareTo(dto2.getSomeData1());
    }
});

myTable.getColumnSortList().push(column1);