Сортировка строк в таблице
Чтобы включить сортировку строк необходимо в SELECT 3 в GetItems установить Sortable=1, а также прописать процедуру UpdateField.
При завершении перетаскивания строки в процедуру приходит pk, равный itemID таблицы, field = 'sortable', value содержит id строк через запятую.
Пример процедуры updateField:
CREATE PROCEDURE [dbo].[crud_watch_sortableTable_updateField]
@itemID int,
@field nvarchar(64),
@value nvarchar(max),
@username nvarchar(64)
AS
BEGIN
if(@field = 'sortable') begin
-- pk - table itemID
-- value - comma separated rowIDs
declare @t table(id int, num int)
insert into @t
select try_cast(Value as int), num
from dbo.split(@value, ',')
where isnull(Value, '')<>''
-- get minimal ord value
declare @minOrd int
set @minOrd = isnull((select min(ord) from tst_customers where id in (select id from @t)) , 0)
-- change ord column
update tst_customers
set ord = @minOrd + isnull( (select top 1 num-1 from @t where id =tst_customers.id ), 0)
where id in (select id from @t)
select 'OK' Msg, 1 Result
end else begin
select 'Невалидный код свойства' Msg, 0 Result
return
end
select '' Msg, 1 Result
END
Примечание:
Если вы хотите, чтобы строку можно было перетаскивать только за определенный элемент на строке, то назначьте ему класс as-table-sortHandle. Если такого элемента нет, то строку можно перетаскивать за любой ее участок.
Лучше поставить pageSize большим - 100, 150. В сортировке участвуют только элементы на текущей странице (только у них обновится поле ord), поэтому сортировка будет некорректно работать в случае если элементов больше чем есть на 1 странице вывода.
Для указанной реализации сортировки нужна функция dbo.split, возвращающая 2 столбца (num и value):
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER FUNCTION [dbo].[split] ( @stringToSplit NVARCHAR(MAX), @char NVarCHAR)
RETURNS
@returnList TABLE ([value] [nvarchar] (max), num int)
AS
BEGIN
Declare @r1 TABLE ([value] [nvarchar] (max), num int)
DECLARE @name NVARCHAR(max)
DECLARE @pos INT
declare @index int = 1
WHILE CHARINDEX(@char, @stringToSplit) > 0
BEGIN
SELECT @pos = CHARINDEX(@char, @stringToSplit)
SELECT @name = SUBSTRING(@stringToSplit, 1, @pos-1)
INSERT INTO @r1
SELECT @name, @index
set @index = @index + 1
SELECT @stringToSplit = SUBSTRING(@stringToSplit, @pos+1, LEN(@stringToSplit)-@pos)
END
INSERT INTO @r1
SELECT @stringToSplit, @index
insert into @returnList
select [Value], num from @r1 order by num
RETURN
END
Страница-источник на сайте falconspace.ru
-
Начало работы
-
Основа Falcon Space
-
Руководства
-
Возможности
-
Коммуникация пользователей
-
Таблицы
Работа с таблицами Вывод данных в таблице - getItems Редактирование данных в колонках таблицы - updateField Удаление строки в таблице - deleteItem Создание строки в таблице - FastCreate Операции в таблице - на строку, групповые операции Настройка параметров таблицы Фильтрация данных в таблице Настройка колонок таблицы Настройка сниппета таблицы Как сделать сортировку в таблице Как реализовать подтаблицу (вложенная таблица), подформу в таблице Как сделать таблицу в модальном окне (открывается в диалоговом окне) Как связать 2 таблицы Кастомная разметка в таблице Выгрузка данных таблицы в XML, JSON, CSV JS коллбеки для таблицы Загрузка таблицы по ссылке Как связать таблицу и редактирование сущности (зависимая страница). Master-slave Как использовать комментарии в таблицах Как добавить в фильтре значение Не выбрано со значением Как установить ширину колонки в таблице Как добавить диапазон даты или чисел (слайдер) в фильтр Как сделать операции только для некоторых строк Как делать различный набор столбцов одной таблицы для разных ролей Как сделать Editable для галочки (Да/Нет) в AS CRUD Как редактировать колонку с датой Как скрыть строчные операции в таблице для определенных строк Как добавить коллбек после загрузки таблицы Отображение таблиц на смартфоне Как работать с галочками в таблице Частые ошибки при настройке таблицы (почему не работает таблица) Как обновить подтаблицу после выполнения некой операции Как обрабатывать групповые операции через модальную форму Как создать предустановленные фильтры для таблицы Как убрать показ количества строк результата в заголовке таблицы? Как сделать сворачивание таблицы (collapse table) Как убрать старые dict процедуры в формах и таблицах Как сделать фильтр с деревом галочек Как отключить сохранение состояния таблицы (фильтры) Как сделать ссылку на всю строку таблицы Как передать через URL значение фильтра Как сделать обрезание ячеек таблицы Сортировка строк в таблице Создание сущности с учетом значений фильтров Оптимизация запроса SQL - извлечение данных для таблицы Режим кастом вывода через JS (custom) Как настроить дополнительные шапку и подвал у таблицы Как сделать зависимые фильтры в таблице Импорт данных в формате файлов txt, csv, excel через компонент Таблица Как гибко управлять видимостью столбцов таблицы Как сделать раскрытие подстроки в таблице через любую ссылку Режим быстрой фильтрации строк без обращения на сервер Выпадающая панель рядом с названием таблицы dropdownPanel Как убрать при загрузке установку фокуса ввода на фильтр (data-nofocus)? Как сделать аналитику по периодам (таблица с интервалами дат) Кастомизация вида операций таблицы Стилизация фильтров таблицы Анализ данных в таблице через внешние сервисы (опция apiSendDataOptions)
-
Формы
-
Поля формы
-
Лендинги
-
Дизайн, стилизация, юзабилити
-
Интеграции
-
Универсальный API
-
Каталоги
-
Навигация
-
Документы
-
Дополнительные компоненты
-
Продвижение, SEO
-
Системные моменты
-
Системное администрирование
-
HOWTO
-
Загрузка файлов, картинок
-
HOWTO SQL
-
HOWTO JS
-
HOWTO Верстка
-
Решение проблем
-
Советы по реализации