Управление иерархией дерева через Drag n Drop
В этом примере было реализовано управление иерархией дерева через Drag&Drop
Для этого мы:
- создали форму и поле типа tree order
- для поля задали словарь значений в fm_watch_ordertree_tree_dict
- в SaveField формы сохраняем перемещение элемента и пересчет порядка других элементов
CREATE PROCEDURE [dbo].[fm_watch_ordertree_tree_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
CREATE PROCEDURE [dbo].[fm_watch_ordertree_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='tree' begin
--новые параметры элемента дерева
declare @elementID int=try_cast(dbo.str_splitPart(@value, ',',1) as int)
declare @temp nvarchar(256)=dbo.str_splitPart(@value,',',2)
declare @parentId int=try_cast(dbo.str_splitPart(@temp, ',',1) as int)
declare @ord int=try_cast(dbo.str_splitPart(@temp, ',',2) as int)
--сохраняем в таблицу
update tst_categories set parentID=@parentId, 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
declare @index int=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
Другие демостенды
— Drag n drop сортировка строк в таблице. Как перетащить строку в таблице— Горизонтальный скроллинг на телефоне - прокрутка панелей вправо на мобильном экране
Что есть в базе знаний по этой теме
— Управление ролями и пользователями на сайте— Страницы. Настройки страницы для формирования главного меню
— Как настроить меню кабинета
— Как сделать сортировку дерева с Drag-and-Drop
— Перетаскивание элементов на странице (Drag-and-Drop)
— Работа с меню
— Как создать вложенное меню каталога в верхней панели
Последние обновления
Интеграции 24.11.2025
Разное 24.11.2025
Форма 15.11.2025
Визуализация 02.11.2025
Таблица 08.10.2025
Форма 26.09.2025
Таблица 23.09.2025
Разное 23.08.2025
Таблица 21.08.2025
Форма 20.08.2025
Таблица 18.08.2025
Таблица 21.06.2025
Форма 07.06.2025
Форма 29.03.2025
Форма 17.02.2025
Файлы и документы 10.01.2025
Форма 01.11.2024
Форма 23.10.2024
SQL-инструмент для создания личных кабинетов на сайте
Платформа Falcon Space
Это снижение стоимости владения
за счет меньшего количества людей для поддержки
Это быстрое внесение изменений
по ходу эксплуатации программы
Это современный интерфейс
полная адаптация под мобильные устройства