Как сделать сортировку дерева с Drag-and-Drop
Пример дерева с возможностью сортировки
Вы можете использовать для этого специальное поле формы вида treeOrder (Сортировка дерева).
В процедуре dict для данного столбца прописываем элементы дерева:
CREATE PROCEDURE [dbo].[fm_tst-form-order_f2_dict]
@username nvarchar(256),
@itemID nvarchar(128)
AS
BEGIN
select c.id Value, -- id
c.name as Text,
isnull(c.parentID, 0) Value2 -- parentID
from tst_categories c
order by ord, id
END
Прописываем процедуру saveField
CREATE PROCEDURE [dbo].[fm_tst-form-order_saveEditableField]
@pk nvarchar(128), -- id for item
@fieldCode nvarchar(64), -- form field
@value nvarchar(max), -- field value
@username nvarchar(256) -- current user
AS
BEGIN
if(@fieldCode='f2') begin
declare @formItemID nvarchar(128) = '', @elementID int = 0, @parentId int = 0, @ord int =0, @temp nvarchar(256)='', @index int
set @elementID = try_cast(dbo.str_splitPart(@value, ',',1) as int)
set @temp = dbo.str_splitPart(@value,',',2)
set @parentId = try_cast(dbo.str_splitPart(@temp, ',',1) as int)
set @ord = try_cast(dbo.str_splitPart(@temp, ',',2) as int)
set @temp = cast(@parentId + @ord + @elementID as nvarchar)
exec as_print @str = @temp
update tst_categories
set parentID = nullif(@parentId, 0), ord = @ord
where id = @elementID
declare @t table(id int, ord int)
insert into @t
select id, ord from tst_categories
where isnull(parentID, 0) = @parentId and id <>@elementID
order by ord,id
set @index = 0
-- обновляем порядок у предыдущих (всех у кого номер меньше)
while (@index <@ord-1) begin
update tst_categories
set ord = @index+1
where id in (select id from @t
order by ord,id
OFFSET @index ROWS
FETCH NEXT 1 ROWS ONLY
)
set @index = @index + 1
end
set @index = @ord
declare @count int = (select count(id) from tst_categories
where isnull(parentID, 0) = @parentId )
-- элементы после текущего
while (@index <@count) begin
update tst_categories
set ord = @index+1+10000
where id in (select id from @t
order by ord,id
OFFSET @index-1 ROWS
FETCH NEXT 1 ROWS ONLY
) and id <>@elementID
set @index = @index + 1
end
select 1 Result, '' Msg
return
end
select 0 Result, 'Не найден код сущности' Msg
END
--admin 04.11.2020 10:52:48
Примечание:
- лучше придерживаться такого порядка обработки в сохранении сортировки (а также сортировать по 2 полям - ord, id).
Falcon Space - функциональная веб-платформа разработки на узком стеке MS SQL/Bootstrap. Вводная по Falcon Space
Google поиск по нашей документации
- Руководства
- Основа Falcon Space
- Основные компоненты
- Возможности
- Коммуникация с пользователем
- Дизайн, стилизация, юзабилити
- Лендинги
- Универсальный API
- Примеры интеграций
- Каталоги
- Навигация
- Документы
- Дополнительные компоненты
- Продвижение, SEO
- Системные моменты
- Системное администрирование
- HOWTO Страницы. Как сделать редирект на другую страницу при загрузке Страницы. Как изменить текст на главной Страницы. Как использовать дополнительные параметры на странице Страницы. Как выводить списковые данные в теле страницы (repeater) Страницы. Настройки страницы для формирования главного меню Страницы. Мне нужен в URL параметр itemID, но там передается из-за сущностей InstanceID Страницы. Как сделать мастер описания функционала страницы Как добавить событие в календарь Google Как идентифицировать анонимного пользователя (по куки)? Дашборды. Как вызвать коллбек после загрузки дашборда Как сделать кнопку определенного действия Как сделать горячие клавиши для событий (нажатие кнопки) Как показывать баланс пользователя вверху кабинета? Где взять фото пользователя Как сделать поддомены с разными языками для сайта Как управлять страницей “404 Страница не найдена” Отслеживание всех действий пользователя в системе Как выводить денежные данные Как оживить интерфейс и сделать его более привлекательным Как показать элемент увеличенным при наведении (например ячейка таблицы) Как дать возможность некоторым ролям вводить html в формах? Что делать если открытая вкладка (tab) сбрасывается при перезагрузке страницы? Как вынести правила редиректа в отдельный файл config Как реализовать создание периодического отчета на почту Попап (popup) окна - показ модальной формы по событию или таймауту Модальная ссылка (as-modal) Как быстро просматривать типовые отчеты с возможностью редактирования SQL Как сделать отдельный универсальный поиск Как реализовать окно уведомления об использовании куки (cookies) Как максимизировать показатели Google PageSpeed для сайта на Falcon Space Безопасность. Как ограничить вход пользователям по IP, порту или домену Как в тексте сделать ссылки кликабельными Как внедрить на сайте автоопределение города с возможностью выбора Как внедрить оглавление в текст Вывод на странице штрихкода (barcode) и QR кода Как вставить универсальный поиск в любое место страницы Вывод справа на странице float панели Как определить координаты lat lng пользователя в текущий момент Как сделать сортировку дерева с Drag-and-Drop Как обновить часть страницы по клику на кнопке Защита от ботов. Настройка блокировки частых запросов по IP Загрузка дашборда по ссылке as-dashboard-link Как запретить копировать текст с сайта. Как добавлять ссылку копирайта в текст при копировании с сайта Как изменить шаблоны хранимых процедур для Формы, Таблицы и др. Определение местоположения пользователя по IP через API (as-ip) Форма Нашли ошибку по Ctrl+Enter Как определить откуда пришел пользователь на сайт? Фиксация источника посещения пользователем сайта Как сделать ссылку, которая скроллит к элементу на странице Как показать/скрыть область на странице по ссылке - as-collapse Генерация документов Word,Excel - гибкий вариант с формой Как сделать обновление интрефейса у другого пользователя по некоему событию
- Таблицы
- Формы
- Загрузка файлов, картинок
- Работа с SQL
- HOWTO JS
- HOWTO Верстка
- Решение проблем
Выгода от использования Falcon Space
В 2-3 раза экономнее и быстрее, чем заказная разработка
Более гибкая, чем коробочные решения и облачные сервисы
Используйте готовые решения и изменяйте под свои потребности
Нужна бесплатная консультация?
Планируете делать веб-проект?
- Шаг 1. Создать концепт проекта
- Шаг 2. Получить оценку бюджета (КП)
- Шаг 3. Заключить договор
- Шаг 4. Создать совместно техническое задание
- Шаг 5. Поэтапная реализация проекта