2014-02-12 5 views
0

Я создал tableviewer.Как удалить избыточный столбец в tableviewer?

Колонки создаются динамически.

Проблема, что у меня всегда есть столбец в таблице.

Я проверил имена столбцов, и я не получил пустой столбец.

Возможно, это может быть конфигурация tableviewer.

У вас есть идея, почему у меня всегда есть другая колонка?

// gridViewer Класс

 public class MyGridViewer extends TableViewer { 
    public MyGridViewer (Composite parent) { 
    super(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION | SWT.BORDER); 

    final Table table = this.getTable(); 
    table.setHeaderVisible(true); 
    table.setLinesVisible(true); 

    this.setContentProvider(new MyModelProvider()); 

     } 
     } 


    @Override 
    protected void inputChanged(Object input, Object oldInput) { 

    removeColumn(); 



     tableCol = new TableViewerColumn(this, SWT.NONE); 
     column = tableCol.getColumn(); 
     column.setText(dataColumnHeader.getName()); 
     column.setWidth(100); 
     column.setResizable(true); 
     column.setMoveable(true); 
     tableCol.setLabelProvider(new ColumnLabelProvider() { 
      @Override 
      public String getText(Object element) { 
       DataRow r = (DataRow) element; 
       DataCell c = r.getDataCellByName(dataColumnHeader.getName()); 
       if (c != null && c.getValue() != null) { 
        return c.getValue().toString(); 
       } 
       return null; 
      } 
      @Override 
      public Image getImage(Object element) { 
        //Add my imgae 
      } 
     }); 



    editingSupport = new StringCellEditingSupport(this, dataColumnHeader); 
    tableCol.setEditingSupport(editingSupport); 
     super.inputChanged(input, oldInput); 

} 

ответ

0

Я не знаю точно, что «лишние» столбец вы ВЕ, но, возможно, вы не распорядилась правильно (если вы говорите, что они динамически создается).

Если бы я был вами, я бы добавил их по-другому.

private void createColumns() 
{ 
    // First, dipose any previously created columns 
    for (TableColumn column : table.getColumns()) 
     column.dispose(); 

    // Then recreate them 
    for (MyColumnPO col : getColumns()) 
    { 
     TableColumn newCol = new TableColumn(table, SWT.NONE); 
     newCol.setText(col.text); 
     newCol.setWidth(col.width); 
    } 
} 

MyColumnPO будет POJO, который выступает за «Моя колонка Презентация объекта». Это содержит информацию о ваших столбцах (текст, ширина, всплывающая подсказка).

Теперь в методе getColumns(), необходимо добавить/создать/удалить/обновить нужные столбцы, инстанцировании MyColumnPO объектов, и добавить их к List, который вы будете возвращаться.

Каждый раз, когда вам нужно динамически создавать столбцы, вы вызываете createColumns().

+0

Я имею в виду, что у меня есть еще один столбец даже в первый раз – user1365697

+0

, поэтому он не связан с распоряжением. – user1365697

Смежные вопросы