x11 Posted April 27, 2021 Share Posted April 27, 2021 Добавляю в событии UniFrameCreate uniDBGrid1.ClientEvents.UniEvents.Values['store.afterCreate'] := 'function store.afterCreate(sender) { sender.setRemoteSort(true);}'; Quote Link to comment Share on other sites More sharing options...
x11 Posted April 27, 2021 Author Share Posted April 27, 2021 Целочисленные (integer) столбцы вроде норм. Quote Link to comment Share on other sites More sharing options...
Sherzod Posted April 27, 2021 Share Posted April 27, 2021 26 minutes ago, x11 said: uniDBGrid1.ClientEvents.UniEvents.Values['store.afterCreate'] := 'function store.afterCreate(sender) { sender.setRemoteSort(true);}'; Вы должны также "учесть" событие OnColumnSort. Quote Link to comment Share on other sites More sharing options...
x11 Posted April 27, 2021 Author Share Posted April 27, 2021 так на бэкэнд, на сервер, ничего не передается, сортировка ведь в браузере происходит Quote Link to comment Share on other sites More sharing options...
Sherzod Posted April 27, 2021 Share Posted April 27, 2021 21 minutes ago, Sherzod said: setRemoteSort(true) Тогда должно быть setRemoteSort(false) Quote Link to comment Share on other sites More sharing options...
x11 Posted April 27, 2021 Author Share Posted April 27, 2021 Тогда это включит сортировку данных на сервере? А проблема в браузерной сортировке. Т.е. в качестве решения проблемы с сортировкой вы хотите отключить сортировку? Разве это решение проблемы? Это все равно что предложить не использовать какую-то функцию, если в этой функции есть ошибка. Quote Link to comment Share on other sites More sharing options...
Sherzod Posted April 27, 2021 Share Posted April 27, 2021 Я кажется Вас неправильно понял. Quote Link to comment Share on other sites More sharing options...
Sherzod Posted April 27, 2021 Share Posted April 27, 2021 2 hours ago, x11 said: Т.е. в качестве решения проблемы с сортировкой вы хотите отключить сортировку? Разве это решение проблемы? Это все равно что предложить не использовать какую-то функцию, если в этой функции есть ошибка. )) Я ничего еще не хотел отключить. 2 hours ago, x11 said: А проблема в браузерной сортировке. Да, проблема в "браузерной" сортировке (setRemoteSort(false)) А при удаленной сортировке - на стороне сервера (setRemoteSort(true)), проблем нет. Quote Link to comment Share on other sites More sharing options...
x11 Posted April 27, 2021 Author Share Posted April 27, 2021 так-с.... я запутался... и вас запутал. Извиняюсь. Вы правы, т.е. если я использую FALSE (в браузере): function store.afterCreate(sender) { sender.setRemoteSort(false);} то проблема есть. А если я использую TRUE (на сервере): function store.afterCreate(sender) { sender.setRemoteSort(true);} то проблемы нет, т.к. сортировка происходит на сервере с помощью SQL-запроса. Я правильно понимаю, что exJS некорректно сортирует поле типа DateTime? Может надо как-то "подсказать" фреймворку, что это поле типа DateTime? Quote Link to comment Share on other sites More sharing options...
Sherzod Posted April 27, 2021 Share Posted April 27, 2021 24 minutes ago, x11 said: Я правильно понимаю, что exJS некорректно сортирует поле типа DateTime? Может надо как-то "подсказать" фреймворку, что это поле типа DateTime? Всё верно. Также был аналогичный вопрос на форуме. Я постараюсь проанализировать. Quote Link to comment Share on other sites More sharing options...
x11 Posted April 27, 2021 Author Share Posted April 27, 2021 Может вы им напишите о проблеме, в техподдержку extJS? Quote Link to comment Share on other sites More sharing options...
Sherzod Posted April 27, 2021 Share Posted April 27, 2021 4 hours ago, x11 said: Может вы им напишите о проблеме, в техподдержку extJS? Мы проанализируем больше. Quote Link to comment Share on other sites More sharing options...
Sherzod Posted April 27, 2021 Share Posted April 27, 2021 11 hours ago, x11 said: function reconfigure(sender, store, columns, oldStore, oldColumns, eOpts) { sender.getStore().setRemoteSort(false); columns.forEach(function(col) { if (col.ct == "datetime" && col.sortable && sender.getStore().remoteSort == false) { col.setSorter({ sorterFn: function(o1, o2) { var v1 = Ext.Date.parse(o1.get(col.dataIndex), 'd.m.Y G:i:s'); var v2 = Ext.Date.parse(o2.get(col.dataIndex), 'd.m.Y G:i:s'); return v1 > v2 ? 1 : (v1 < v2 ? -1 : 0) } }); } }); } 1 Quote Link to comment Share on other sites More sharing options...
Dinkin Posted February 13 Share Posted February 13 Добрый день. reconfigure Куда добавлять, прям в таблицу?...и ее в связке с этим использовать? uniDBGrid1.ClientEvents.UniEvents.Values['store.afterCreate'] := 'function store.afterCreate(sender) { sender.setRemoteSort(false);}'; Quote Link to comment Share on other sites More sharing options...
Sherzod Posted February 13 Share Posted February 13 21 minutes ago, Dinkin said: Куда добавлять, прям в таблицу? Добрый день, Простите, не понял Ваш вопрос. Добавьте в ClientEvents. Quote Link to comment Share on other sites More sharing options...
Dinkin Posted February 13 Share Posted February 13 ага, а это надо использовать в связке в вашим скриптом ? store.afterCreate' Quote Link to comment Share on other sites More sharing options...
Sherzod Posted February 13 Share Posted February 13 On 4/27/2021 at 10:29 PM, Sherzod said: function reconfigure(sender, store, columns, oldStore, oldColumns, eOpts) { sender.getStore().setRemoteSort(false); columns.forEach(function(col) { if (col.ct == "datetime" && col.sortable && sender.getStore().remoteSort == false) { col.setSorter({ sorterFn: function(o1, o2) { var v1 = Ext.Date.parse(o1.get(col.dataIndex), 'd.m.Y G:i:s'); var v2 = Ext.Date.parse(o2.get(col.dataIndex), 'd.m.Y G:i:s'); return v1 > v2 ? 1 : (v1 < v2 ? -1 : 0) } }); } }); } Можете попробовать использовать только этот код. 1 Quote Link to comment Share on other sites More sharing options...
Dinkin Posted February 13 Share Posted February 13 Ну всякий случай уточню...этот код я добавляю как собственное событие для таблицы в ExtEvents? А для столбца sorted включали? Quote Link to comment Share on other sites More sharing options...
Sherzod Posted February 13 Share Posted February 13 Если я правильно Вас понимаю, то этод код перезаписывает метод сортировки для всех столбцов с типом datetime... Quote Link to comment Share on other sites More sharing options...
Sherzod Posted February 13 Share Posted February 13 И сортировка происходит на стороне клиента. Quote Link to comment Share on other sites More sharing options...
Dinkin Posted February 13 Share Posted February 13 Sherzod Да мне бы любой способ)....но походу для колонки даты в TUniDBTreeGrid ни один способ не отрабатывает (на форуме нашел три варианта) Quote Link to comment Share on other sites More sharing options...
Sherzod Posted February 13 Share Posted February 13 Можете создать простой тестовый случай? Я попробую проанализировать. Quote Link to comment Share on other sites More sharing options...
Dinkin Posted February 13 Share Posted February 13 У меня только с++😐, как понял в таком виде Вы не принимаете. Quote Link to comment Share on other sites More sharing options...
Sherzod Posted February 13 Share Posted February 13 Даа... 1 Quote Link to comment Share on other sites More sharing options...
Sherzod Posted February 13 Share Posted February 13 2 hours ago, Dinkin said: но походу для колонки даты в TUniDBTreeGrid ни один способ не отрабатывает Тип поля? DateTime, Date? Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.