Управление иерархией дерева через 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
Другие модули
Редактирование одиночных полей формы в личном кабинете
Цвет фона формы. Как изменить фон формы на сайте
Работа с буфером обмена на сайте. Как скопировать текст в буфер обмена
Обновление содержимого страницы сайта (Refresh container). Перезагрузка части страницы
Последние обновления
Форма 01.11.2024
Форма 23.10.2024
Форма 13.08.2024
Таблица 03.06.2024
Таблица 23.09.2023
15.09.2023
Визуализация 02.08.2023
Визуализация 02.08.2023
Визуализация 01.08.2023
Таблица 18.03.2023
Форма 19.12.2022
Таблица 06.12.2022
Форма 01.12.2022
Форма 21.11.2022
Форма 17.11.2022
Форма 10.11.2022
Таблица 16.09.2022
Разное 14.09.2022
Таблица 09.09.2022
SQL-инструмент для создания личных кабинетов на сайте
Платформа Falcon Space
Это снижение стоимости владения
за счет меньшего количества людей для поддержки
Это быстрое внесение изменений
по ходу эксплуатации программы
Это современный интерфейс
полная адаптация под мобильные устройства