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

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

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

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

table.setContainerDataSource(...)
...
Рейтинг: 0 / 0
Как должна быть сделана сортировка при клике по по заголовку столбца в Vaadin Table?
    #39265213
MAULER
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Как должна быть сделана сортировка при клике по по заголовку столбца в Vaadin Table?
    #39265482
Nixic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я особо не вникал, но я использую IndexedContainer
может в этом и проблема, надо погуглить :)
...
Рейтинг: 0 / 0
Как должна быть сделана сортировка при клике по по заголовку столбца в Vaadin Table?
    #39265493
MAULER
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nixicя особо не вникал, но я использую IndexedContainer
может в этом и проблема, надо погуглить :)

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

Код: 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
Как должна быть сделана сортировка при клике по по заголовку столбца в Vaadin Table?
    #39265867
MAULER
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nixic,

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

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



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

а почему не Grid? легаси какое-то?
...
Рейтинг: 0 / 0
Как должна быть сделана сортировка при клике по по заголовку столбца в Vaadin Table?
    #39265942
Nixic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Как должна быть сделана сортировка при клике по по заголовку столбца в Vaadin Table?
    #39265943
Nixic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в общем тут внизу страницы, последний ответ, там семпл и код этого семпла, в коде как раз этот самый
implements FreeformStatementDelegate раскрывается.
...
Рейтинг: 0 / 0
Как должна быть сделана сортировка при клике по по заголовку столбца в Vaadin Table?
    #39265946
Nixic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Как должна быть сделана сортировка при клике по по заголовку столбца в Vaadin Table?
    #39266007
MAULER
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nixicно я так понял, оно нужно для сложных запросов при работе с несколькими таблицами

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

а почему не Grid? легаси какое-то?
Grid, это в ваадине вроде компонент разметки страницы, а не отображения табличной информации.
...
Рейтинг: 0 / 0
Как должна быть сделана сортировка при клике по по заголовку столбца в Vaadin Table?
    #39266018
Юрий321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Как должна быть сделана сортировка при клике по по заголовку столбца в Vaadin Table?
    #39266069
Nixic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Юрий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
Как должна быть сделана сортировка при клике по по заголовку столбца в Vaadin Table?
    #39266076
Юрий321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Как должна быть сделана сортировка при клике по по заголовку столбца в Vaadin Table?
    #39266078
MAULER
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Коллеги, подскажите, как узнать направление сортировки у столбца в Table vaadin?
Я вижу что при одном клике стрелочка вверх, при повторном - стрелочка вниз, а как в программе догадаться что за режим сортировки стоит?
...
Рейтинг: 0 / 0
Как должна быть сделана сортировка при клике по по заголовку столбца в Vaadin Table?
    #39266083
Nixic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MAULERКоллеги, подскажите, как узнать направление сортировки у столбца в Table vaadin?
Я вижу что при одном клике стрелочка вверх, при повторном - стрелочка вниз, а как в программе догадаться что за режим сортировки стоит?
я бы лейбел где-то отобразил, что мол сортировка по умолчанию по столбцу Х по возрастанию. Мне кажется, что это даже лучше/нагляднее для пользователя, чем искать глазами треугольничек по всем столбцам, если вы найдете способ как програмно его отобразить.
...
Рейтинг: 0 / 0
Как должна быть сделана сортировка при клике по по заголовку столбца в Vaadin Table?
    #39266092
MAULER
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nixic,
не, можно конечно хранить переменные (каждая на свой столбец) и отслеживать их состояние, но это какой-то каменный век - честное слово ))
...
Рейтинг: 0 / 0
Как должна быть сделана сортировка при клике по по заголовку столбца в Vaadin Table?
    #39266130
Nixic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MAULERNixic,
не, можно конечно хранить переменные (каждая на свой столбец) и отслеживать их состояние, но это какой-то каменный век - честное слово ))
да зачем переменные, у вас же в запросе есть ордер бай какой-то, вы же знаете по какому полю оно сортируется по умолчанию, ну вот так и пишите в лейбле, без всяких переменных, можно даже .addComponent(new Label("по-умолчанию сортировка по столбцу.. блабла")).
А когда пользователь щелкает по заголовку, то лейбел неменяется, но пользователь же понимает что он уже отсортировал по своему и знает по какому полю.
...
Рейтинг: 0 / 0
Как должна быть сделана сортировка при клике по по заголовку столбца в Vaadin Table?
    #39266156
MAULER
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nixic,

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

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

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

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

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

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

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

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

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

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


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