x11 Posted April 27, 2021 Share Posted April 27, 2021 Включаю удаленную (браузерную) сортировку. Пользователь щелкает по заголовкам и данные в сетке сортируются. Потом нужно всю сортировку отменить (сбросить к прежнему виду), другими словами, привести данные в сетке в прежний вид, как было до сортировки. procedure ClearSort(grid: TUniDBGrid); begin // UniSession.AddJS(grid.JSName + '.getStore().sorters.clear(); ' + grid.JSName + '.view.refresh();' ); UniSession.AddJS(grid.JSName + '.getStore().sorters.clear();'); UniSession.AddJS(grid.JSName + '.view.refresh();'); end; При этом, скрываются только маркеры (треугольники), а сами данные остаются отсортированными. Т.е. фактически отмена сортировки не происходит. Пример брал отсюда, но он старый. Судя по примеру, сортировка не отменяется. Может в extJS за 7 лет уже появилась возможность возвращать данные в сетке в прежний вид, как до сортировки? Спасибо. Quote Link to comment Share on other sites More sharing options...
Sherzod Posted April 27, 2021 Share Posted April 27, 2021 10 hours ago, x11 said: Потом нужно всю сортировку отменить (сбросить к прежнему виду), другими словами, привести данные в сетке в прежний вид, как было до сортировки. Один из возможных решений: procedure TMainForm.UniButton1Click(Sender: TObject); begin with UniDBGrid1.JSInterface do begin JSCall('getStore().sorters.clear', []); JSCall('getStore().reload', []); end; end; 1 Quote Link to comment Share on other sites More sharing options...
Sherzod Posted April 27, 2021 Share Posted April 27, 2021 Или: procedure TMainForm.UniButton1Click(Sender: TObject); begin with UniDBGrid1, UniDBGrid1.JSInterface do begin JSCall('getStore().sorters.clear', []); //JSCall('getStore().reload', []); Refresh; end; end; 1 Quote Link to comment Share on other sites More sharing options...
zilav Posted April 28, 2021 Share Posted April 28, 2021 вообще возвращать из базы не сортированные данные дурной тон, т.е они все равно как-то сортированы, обычно исходя из расположения записей в БД если совсем ORDER BY не писать. Т.е я обычно первоначально возвращаю сразу сортированные записи по нужному полю, либо просто по primary key, и сразу ставлю значок на колонке что данные отсортированы. Quote Link to comment Share on other sites More sharing options...
Sherzod Posted April 28, 2021 Share Posted April 28, 2021 Можно и не загружать серверную часть, просто зная по какому полю была сортировка до начала "сортировки", можно очистить и применить сортировку на клиентской стороне по "умолчанию". Quote Link to comment Share on other sites More sharing options...
x11 Posted April 28, 2021 Author Share Posted April 28, 2021 абсолютно не дурной, первый раз о таком слышу зачем лишний раз нагружать сервер я согласен, что есть случаи, когда нужно выдавать данные в отсортированном виде, но если ты не знаешь, в каком виде нужны данные пользователю, то какой смысл Quote Link to comment Share on other sites More sharing options...
x11 Posted April 28, 2021 Author Share Posted April 28, 2021 4 minutes ago, Sherzod said: Можно и не загружать серверную часть К сожалению, сетка extJS+uniGUI реализованы так, что сортировка и фильтрация работают только с учетом данных текущей страницы. Quote Link to comment Share on other sites More sharing options...
x11 Posted April 28, 2021 Author Share Posted April 28, 2021 Я понял, т.е. без повторной загрузки данных с сервера в сетку не получится Quote Link to comment Share on other sites More sharing options...
Sherzod Posted April 28, 2021 Share Posted April 28, 2021 18 minutes ago, x11 said: Я понял, т.е. без повторной загрузки данных с сервера в сетку не получится Если грид многостраничный, то да. 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.