Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Как должна быть сделана сортировка при клике по по заголовку столбца в Vaadin Table? / 24 сообщений из 24, страница 1 из 1
30.06.2016, 09:10
    #39265170
MAULER
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как должна быть сделана сортировка при клике по по заголовку столбца в Vaadin Table?
Добрый день.

Есть vaadin -таблица Table которая отображает содержимое таблицы БД при помощи SQL -запроса.

Проблема в том, что при клике по заголовку столбца таблицы я вижу то стрелочку вверх (типа сортировка по возрастанию), то стрелочку вниз (по убыванию). Но самой сортировки почему то не происходит. о_О

Скажите пожалуйста, эта сортировка должна быть на уровне Table Vaadin (но я что-то забыл указать) или это просто "бутафорские" )) стрелочки, и никакой сортировки не предполагается и мне нужно писать отдельный обработчик клика и "подсовывать" select с order by ???
...
Рейтинг: 0 / 0
30.06.2016, 10:01
    #39265198
Nixic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как должна быть сделана сортировка при клике по по заголовку столбца в Vaadin Table?
Нет, они не бутафорские.
У меня таких проблем не было, может вы не используете контейнер для создания таблицы?
По идее даже нет такого свойства (на сколько я помню) чтобы отключать или включать фильтрацию.
...
Рейтинг: 0 / 0
30.06.2016, 10:02
    #39265199
Nixic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как должна быть сделана сортировка при клике по по заголовку столбца в Vaadin Table?
в 7-м это

table.setContainerDataSource(...)
...
Рейтинг: 0 / 0
30.06.2016, 10:21
    #39265213
MAULER
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как должна быть сделана сортировка при клике по по заголовку столбца в Vaadin Table?
Nixic,

Нет, контейнер конечно же есть, иначе как бы я увидел в Table результаты выборки?

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
protected SQLContainer getResults(String driver, String connectionString, String userName, String password, String queryString)
{
        SQLContainer container = null;
        try
        {
            SimpleJDBCConnectionPool connectionPool = new SimpleJDBCConnectionPool(driver, connectionString, userName, password, 2, 5);
            FreeformQuery query = new FreeformQuery(queryString, connectionPool);
            container = new SQLContainer(query);
        }
        catch (SQLException e)
        {
            e.printStackTrace();
        }
        finally
        {
            return container;
        }
}



Вызываю отсюда:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
String driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
String connectionString = "jdbc:sqlserver://SERVER;databasename=DB";
String userName = "USER";
String password = "PASSWORD";

queryString = "SELECT distinct vru.Full_User_Name0 AS 'Пользователь'," + "\n" +
                      "SYS.User_Domain0 AS 'Домен'," + "\n" +
                      "SYS.Netbios_Name0 AS 'Компьютер'," + "\n" +
                      "convert (varchar(50), SYS.Creation_Date0, 104) AS 'Создан',"  + "\n" +
                      "SYS.User_Name0 AS 'Логин'," + "\n" +
                      "OPSYS.Caption0 AS 'OS'," + "\n" +
                      "case when OPSYS.CSDVersion0 LIKE '%Service Pack%' then 'SP ' + right(OPSYS.CSDVersion0, 1) end AS 'SP'," + "\n" +
                      "MEM.TotalPhysicalMemory0 AS 'RAM'," + "\n" +
                      "CSYS.Model0 AS 'Motherboard'," + "\n" +
                      "Processor.Name0 AS 'CPU'" + "\n" +
                      "FROM v_R_System SYS" + "\n" +
                      "INNER JOIN v_R_User vru on SYS.User_Domain0 + '\\' + SYS.User_Name0 = vru.Unique_User_Name0" + "\n" +
                      "LEFT JOIN v_GS_X86_PC_MEMORY MEM on SYS.ResourceID = MEM.ResourceID" + "\n" +
                      "LEFT JOIN v_GS_COMPUTER_SYSTEM CSYS on SYS.ResourceID = CSYS.ResourceID" + "\n" +
                      "LEFT JOIN v_GS_PROCESSOR Processor on Processor.ResourceID = SYS.ResourceID" + "\n" +
                      "LEFT JOIN v_GS_OPERATING_SYSTEM OPSYS on SYS.ResourceID = OPSYS.ResourceID" + "\n" +
                      "WHERE OPSYS.Caption0 is not null"

Table table = new Table("Результат", getResults(driver, connectionString, userName, password, queryString));



Но кликанье по столбцам таблицы ничего не приносит (((
...
Рейтинг: 0 / 0
30.06.2016, 13:51
    #39265482
Nixic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как должна быть сделана сортировка при клике по по заголовку столбца в Vaadin Table?
я особо не вникал, но я использую IndexedContainer
может в этом и проблема, надо погуглить :)
...
Рейтинг: 0 / 0
30.06.2016, 14:02
    #39265493
MAULER
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как должна быть сделана сортировка при клике по по заголовку столбца в Vaadin Table?
Nixicя особо не вникал, но я использую IndexedContainer
может в этом и проблема, надо погуглить :)

Я его уже пробовал, но там почему то вместо пунктов меню пустышки.
...
Рейтинг: 0 / 0
30.06.2016, 14:19
    #39265519
Nixic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как должна быть сделана сортировка при клике по по заголовку столбца в Vaadin Table?
а вы его заполнили?

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
 public void createTableContainer() {
        ic = new IndexedContainer();
        ic.removeAllItems();
        ic.addContainerProperty(idStr, Integer.class, null);
        ic.addContainerProperty(nameStr, String.class, null);
        if (contractors != null) {
            for (Contractor c1 : contractors) {
                Item item = ic.addItem(c1);
                createContainerItem(item, c1);
            }
        }
    }
   
    public void createContainerItem(Item item, Object object) {
        if (object instanceof Contractor) {
            Contractor c = (Contractor) object;
            item.getItemProperty(idStr).setValue(c.getId());
            item.getItemProperty(nameStr).setValue(c.getName());
        }
    }



idStr и nameStr - навание столбцов
contractors - массив данных(объектов) полученый из запроса

где-нибудь присвойте ваш заполненный контейнер таблице.
Код: java
1.
 table.setContainerDataSource(ic);



к пабликам не придирайтесь, мне так надо :)
...
Рейтинг: 0 / 0
30.06.2016, 19:17
    #39265867
MAULER
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как должна быть сделана сортировка при клике по по заголовку столбца в Vaadin Table?
Nixic,

Похоже проблема не в этом, а вот в чем:

Код: java
1.
FreeformQuery query = new FreeformQuery(queryString, connectionPool);



на сайте ваадина нашел, что если используешь FreeformQuery, то фильтры, сортировка будут недоступны :(
Жаль.
...
Рейтинг: 0 / 0
30.06.2016, 19:47
    #39265879
Юрий321
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как должна быть сделана сортировка при клике по по заголовку столбца в Vaadin Table?
MAULER,

а почему не Grid? легаси какое-то?
...
Рейтинг: 0 / 0
30.06.2016, 22:22
    #39265942
Nixic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как должна быть сделана сортировка при клике по по заголовку столбца в Vaadin Table?
MAULER,

ну вот пишут:
FreeformQuery mode allows you to specify any complex query and have it's results populate the container, however you need to impelment support for writing, sorting, filtering and lazy loading by implementing the FreeformQueryDelegate interface.

Я с ним не работал и не разбирал, но я так понял, оно нужно для сложных запросов при работе с несколькими таблицами, такого я пока стараюсь избегать, обыгрывая это через интерфейс :)
...
Рейтинг: 0 / 0
30.06.2016, 22:25
    #39265943
Nixic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как должна быть сделана сортировка при клике по по заголовку столбца в Vaadin Table?
в общем тут внизу страницы, последний ответ, там семпл и код этого семпла, в коде как раз этот самый
implements FreeformStatementDelegate раскрывается.
...
Рейтинг: 0 / 0
30.06.2016, 22:27
    #39265946
Nixic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как должна быть сделана сортировка при клике по по заголовку столбца в Vaadin Table?
...
Рейтинг: 0 / 0
01.07.2016, 07:08
    #39266007
MAULER
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как должна быть сделана сортировка при клике по по заголовку столбца в Vaadin Table?
Nixicно я так понял, оно нужно для сложных запросов при работе с несколькими таблицами

Правильно поняли! :) У меня как раз сложный такой запрос, сцепка по нескольким таблицам идет.
...
Рейтинг: 0 / 0
01.07.2016, 07:10
    #39266008
MAULER
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как должна быть сделана сортировка при клике по по заголовку столбца в Vaadin Table?
Юрий321MAULER,

а почему не Grid? легаси какое-то?
Grid, это в ваадине вроде компонент разметки страницы, а не отображения табличной информации.
...
Рейтинг: 0 / 0
01.07.2016, 08:04
    #39266018
Юрий321
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как должна быть сделана сортировка при клике по по заголовку столбца в Vaadin Table?
MAULERЮрий321MAULER,

а почему не Grid? легаси какое-то?
Grid, это в ваадине вроде компонент разметки страницы, а не отображения табличной информации.

не, компонент тоже

https://vaadin.com/docs/-/part/framework/components/components-grid.html
https://morevaadin.com/content/table-dead-long-live-grid
...
Рейтинг: 0 / 0
01.07.2016, 09:54
    #39266069
Nixic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как должна быть сделана сортировка при клике по по заголовку столбца в Vaadin Table?
Юрий321MAULERпропущено...

Grid, это в ваадине вроде компонент разметки страницы, а не отображения табличной информации.

не, компонент тоже

https://vaadin.com/docs/-/part/framework/components/components-grid.html
https://morevaadin.com/content/table-dead-long-live-grid
Ух ты! То есть всё, конец мучениям с таблицами? Теперь все быстро и просто работает? ))
Не, я серьезно спрашиваю, у ваадина как раз была проблема, точнее у меня была проблема с ним, когда в таблице, к примеру 30 полей из них 10-15 нужно редактировать, а количество строк за 100+, то таблица начинает тупить, откровенно плохо прокручивается и иногда не сохраняет значения. Как я ни бился с ней и с листенерами на поля ввода и с переписыванием запросов к БД и с пулами и т.д.
Как оно теперь ? :)
...
Рейтинг: 0 / 0
01.07.2016, 10:06
    #39266076
Юрий321
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как должна быть сделана сортировка при клике по по заголовку столбца в Vaadin Table?
NixicЮрий321пропущено...


не, компонент тоже

https://vaadin.com/docs/-/part/framework/components/components-grid.html
https://morevaadin.com/content/table-dead-long-live-grid
Ух ты! То есть всё, конец мучениям с таблицами? Теперь все быстро и просто работает? ))
Не, я серьезно спрашиваю, у ваадина как раз была проблема, точнее у меня была проблема с ним, когда в таблице, к примеру 30 полей из них 10-15 нужно редактировать, а количество строк за 100+, то таблица начинает тупить, откровенно плохо прокручивается и иногда не сохраняет значения. Как я ни бился с ней и с листенерами на поля ввода и с переписыванием запросов к БД и с пулами и т.д.
Как оно теперь ? :)

скажу честно, в глубины не рыл, использую в простых вариантах индексед контейнер и в сложных пропетииндексед контейнер, данные подаю из самодельного аналога спрингового CrudRepository, ничего сложного не делал, редактирую в отдельной форме, тормозов нет.
...
Рейтинг: 0 / 0
01.07.2016, 10:06
    #39266078
MAULER
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как должна быть сделана сортировка при клике по по заголовку столбца в Vaadin Table?
Коллеги, подскажите, как узнать направление сортировки у столбца в Table vaadin?
Я вижу что при одном клике стрелочка вверх, при повторном - стрелочка вниз, а как в программе догадаться что за режим сортировки стоит?
...
Рейтинг: 0 / 0
01.07.2016, 10:11
    #39266083
Nixic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как должна быть сделана сортировка при клике по по заголовку столбца в Vaadin Table?
MAULERКоллеги, подскажите, как узнать направление сортировки у столбца в Table vaadin?
Я вижу что при одном клике стрелочка вверх, при повторном - стрелочка вниз, а как в программе догадаться что за режим сортировки стоит?
я бы лейбел где-то отобразил, что мол сортировка по умолчанию по столбцу Х по возрастанию. Мне кажется, что это даже лучше/нагляднее для пользователя, чем искать глазами треугольничек по всем столбцам, если вы найдете способ как програмно его отобразить.
...
Рейтинг: 0 / 0
01.07.2016, 10:21
    #39266092
MAULER
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как должна быть сделана сортировка при клике по по заголовку столбца в Vaadin Table?
Nixic,
не, можно конечно хранить переменные (каждая на свой столбец) и отслеживать их состояние, но это какой-то каменный век - честное слово ))
...
Рейтинг: 0 / 0
01.07.2016, 10:53
    #39266130
Nixic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как должна быть сделана сортировка при клике по по заголовку столбца в Vaadin Table?
MAULERNixic,
не, можно конечно хранить переменные (каждая на свой столбец) и отслеживать их состояние, но это какой-то каменный век - честное слово ))
да зачем переменные, у вас же в запросе есть ордер бай какой-то, вы же знаете по какому полю оно сортируется по умолчанию, ну вот так и пишите в лейбле, без всяких переменных, можно даже .addComponent(new Label("по-умолчанию сортировка по столбцу.. блабла")).
А когда пользователь щелкает по заголовку, то лейбел неменяется, но пользователь же понимает что он уже отсортировал по своему и знает по какому полю.
...
Рейтинг: 0 / 0
01.07.2016, 11:07
    #39266156
MAULER
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как должна быть сделана сортировка при клике по по заголовку столбца в Vaadin Table?
Nixic,

Дело не в этом.

Я сортирую таблицу при помощи запроса select добавлением к нему

order by + column , где column - это переменная содержащая имя столбца!

Понятно, что для полного счастья нужно добавить либо Ascending либо Descending но что именно? Ведь при клике по заголовку, я знаю столбец, но не знаю была ли сортировка ДО этого и по какому столбцу. Поэтому мне нужно знать, что засылать в select - Ascending либо Descending .
...
Рейтинг: 0 / 0
01.07.2016, 12:30
    #39266282
Nixic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как должна быть сделана сортировка при клике по по заголовку столбца в Vaadin Table?
MAULERNixic,

Дело не в этом.

Я сортирую таблицу при помощи запроса select добавлением к нему

order by + column , где column - это переменная содержащая имя столбца!

Понятно, что для полного счастья нужно добавить либо Ascending либо Descending но что именно? Ведь при клике по заголовку, я знаю столбец, но не знаю была ли сортировка ДО этого и по какому столбцу. Поэтому мне нужно знать, что засылать в select - Ascending либо Descending .
хм, но ведь при сортировке, ваадин не запрашивает данные из БД еще раз. Или вам надо, чтобы при пересоздании таблицы вновь ее отсортировать по ранее отсортированному столбцу? Типа сохранение настроек пользователя как она работал до этого.
Если так, то я лично для своего проекта сделал такое сохранение ширины столбцов и их порядок, что у каждого юзера эти настройки передаются в класс который сериализуется и падает на сервере в папку юзера, потом когда он вновь заходит проверяется есть ли файл и если есть, то из него берутся "старые" настройки, если нет, то по-умолчанию всё.
...
Рейтинг: 0 / 0
04.07.2016, 05:24
    #39267080
MAULER
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как должна быть сделана сортировка при клике по по заголовку столбца в Vaadin Table?
Nixic,

Да, но при клике по столбцу он и не сортирует ничего. Мне приходиться добиваться сортировки добавлением в строку запроса с select "добавки" с Asc либо Desc.

Но так или иначе вопрос я решил. Просто немного переделал код. Спасибо!
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Как должна быть сделана сортировка при клике по по заголовку столбца в Vaadin Table? / 24 сообщений из 24, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]