2010-06-19 2 views
0

Я реализую tableviewer, который способен сортировать значения depengin в порядке их столбцов. , например. column1-column2-columnX сортирует строки первой на значении столбца 1, то на колонку 2, колонка ....Jface tableviewer multi sort columns

Поэтому я хочу использовать ColumnViewerSorter, особенно метод «INT doCompare (зритель, объект e1, объект e2);

Внутри этого метода я хочу сортировать в зависимости от других строк/ячеек Tableviewer для сравнения, а трудность заключается в том, что JFace tableviewer выполняет сортировку только в представлении, поэтому мне нужно «спросить» сам tableviewer для фактического значения например «столбец 1, строка 20»

с использованием функции «viewer.getElementAt (index)» внутри «docompare» wold будет нормально, но внутри docompare у меня нет ссылки на объекты e1 и e2 в tableviewer.

Как я могу достичь этого?

поблагодарить вас очень много заранее за помощь мне

наилучшими пожеланиями,

Малкольм

ответ

0

Вы можете перебрать все элементы в средстве просмотра таблицы и увидеть, где объекты e1 и e2 являются, курс.

НО ... и я надеюсь, что правильно понимаю вашу проблему ... почему вы хотите реализовать мультисортировку?

Допустим, у вас есть 3 колонки:

Col1  Col2  Col3 
------------------------- 
a2  b1  c4 
a1  b2  c1 
a2  b1  c3 

Чтобы получить порядок сортировки Col1-Col2-COL3, пользователь может нажать на Col3, затем на Col2, и в конце концов Col1:

Col1  Col2  _Col3_ 
------------------------- 
a1  b2  c1   
a2  b1  c3 
a2  b1  c4 


Col1  _Col2_  Col3 
-------------------------  
a2  b1  c3 
a2  b1  c4 
a1  b2  c1 


_Col1_  Col2  Col3 
-------------------------  
a1  b2  c1  
a2  b1  c3 
a2  b1  c4 

Это может быть не лучший пример, но для получения «многоуровневой сортировки» пользователю просто нужно отсортировать нужные столбцы в обратном порядке.

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