在插入和删除GWT中的列时,如何修复列排序问题



我有一个cellTable,具有许多列,例如以下内容:

OrderID-订购日期 - 订购时间 - 名称.....1-2012-01-05-11:12:12-汤姆......

每列将有一个用于hide/undide列的复选框:

[x] OrderID(复选框)[x]订购(复选框)[x]订单时间(复选框)......

要求:我希望当用户取消选中复选框时,相应的列将消失&当他们选中复选框时,该列将以正确的顺序出现在开始时。这是代码:

public void insertColumn(int beforeIndex, TextColumn<String[]> textColumn, String columnName){
    if(getView().getOrderListCellTable().getColumnIndex(textColumn)==-1){
        getView().getOrderListCellTable().insertColumn(beforeIndex,textColumn, columnName);
        textColumn.setSortable(true);
    }
}
public void removeColumn(TextColumn<String[]> textColumn){
    int index= getView().getOrderListCellTable().getColumnIndex(textColumn);
    if(index!=-1){
        getView().getOrderListCellTable().removeColumn(index);
    }
}

但是,我得到了这个问题,当我隐藏/不打开1列时,订单还可以,ex,隐藏订购列,则表将是这样的:

订购 - 订单时间 - 名称.....1-11:12:12-汤姆......

和当然,当订购日期不足时,它将正确回到开始。

代码插入/删除OrderDate

    getView().getOrderDateCheckBox().addClickHandler(new ClickHandler(){
        @Override
        public void onClick(ClickEvent event)       {   
            if(getView().getOrderDateCheckBox().getValue()){    
                insertColumn(1, orderDateColumn,"Order Date");
            }
            else{
                removeColumn(orderDateColumn);
            }
        }
    });

但是,如果我隐藏了有序的&amp;订购日期&amp;然后UND订购日期,然后就是这样:

订购时间 - 订购日期 - 名称.....11:12:12-2012-01-05-汤姆......

这是不对的,因为他的订单应在订购时间之前站立。这个cos i insertColumn(1, orderDateColumn,"Order Date");位于位置1(索引之前)。

您可以找出解决此问题的逻辑吗?

  1. 创建列。
  2. 为每列分配一个订单号:0、1、2等。
  3. 在插入订单号x的列时,查找第一个列的订单号高于x,该列中存在于表中。在它之前插入此列。

最新更新