Как сделать сортировку дерева с 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
Примеры работы компонентов платформы Falcon Space
Примеры удобных таблиц и форм Примеры дашборда Примеры графиков и диаграмм Пример календаря Таблица с данными по API Пример вывода карты с точками Виды полей форм Пример виджета статистики Пример дерева иерархии Пример компонента Временная линия Пример карточки товаров Пример учета загрузки ресурса Пример Канбан доски Пример мастер формы Пример выгрузки документов Excel/Word Пример заполнения данных по ИНН- Руководства
- Основа Falcon Space
- Основные компоненты
- Возможности Falcon Space
- Подсистемы
- Дополнительные компоненты
- Интеграции
- HOWTO HOWTO. Как быстро перенести решение (таблицы, формы, страницы) на другую базу? HOWTO. Как быстро редактировать страницы и параметры компонентов HOWTO. Как сделать кнопку определенного действия HOWTO. Анимация элементов. Как работать с анимацией HOWTO. Как сделать анимацию иконок HOWTO. Как сделать горячие клавиши для событий (нажатие кнопки) HOWTO. Где я могу редактировать процедуру поиска, процедуру общих элементов Layout, процедуры периодического запуска и др? HOWTO. Как показывать баланс пользователя вверху кабинета? HOWTO. Как сделать lazy loading для картинок HOWTO. Как можно в меню добавить динамические элементы (например Проекты)? HOWTO. Как отправить Email, SMS или уведомление пользователю HOWTO. Где взять фото пользователя HOWTO. Как сделать поддомены с разными языками для сайта HOWTO. Как управлять страницей “404 Страница не найдена” HOWTO. Как создать новую тему дизайна сайта HOWTO. Отслеживание всех действий пользователя в системе HOWTO. Отслеживание изменений хранимых процедур и страниц (logChanges) HOWTO. Как настроить меню кабинета HOWTO. Создание новых компонентов, кастомная разработка под проект. HOWTO. Как настроить чат помощи для пользователей HOWTO. Как выводить денежные данные HOWTO. Как оживить интерфейс и сделать его более привлекательным HOWTO. Как показать элемент увеличенным при наведении (например ячейка таблицы) HOWTO. Как отключить свайп открытия меню HOWTO. Как дать возможность некоторым ролям вводить html в формах? HOWTO. Что делать если открытая вкладка(tab) сбрасывается при перезагрузке страницы? Страницы. Как добавить хлебные крошки Страницы. Как сделать редирект на другую страницу при загрузке Страницы. Как изменить текст на главной Страницы. Как использовать дополнительные параметры на странице Страницы. Как выводить списковые данные в теле страницы (repeater) Страницы. Настройки страницы для формирования главного меню Страницы. Мне нужен в URL параметр itemID, но там передается из-за сущностей InstanceID Страницы. Как внедрить лендинг со своим шаблоном и стилями Страницы. Как сделать мастер описания функционала страницы Как добавить событие в календарь Google Как идентифицировать анонимного пользователя (по куки)? Falcon Space. HOWTO Общее Перенос компонентов между БД Как сделать липкую панель сверху страницы Falcon Space. Словарь терминов Как реализовать создание периодического отчета на почту Как сделать push уведомление Кастом разметка верхней панели (TopMakeup) Попап (popup) окна - показ модальной формы по событию или таймауту Как настроить меню на смартфонах снизу экрана Модальная ссылка (as-modal) Как сделать отдельный универсальный поиск Как реализовать окно уведомления об использовании куки (cookies) Верстка. Как поменять столбцы местами на смартфоне Как увеличить размер подгружаемых файлов Как внедрить оглавление в текст Вывод на странице штрих-кода (barcode) и QR кода Копирование текста в буфер обмена Управление анимацией для форм, таблиц Как вставить универсальный поиск в любое место страницы Логирование изменений объектов на примере хранимых процедур Отпимизация по загрузке картинок Как сделать основное меню горизонтальным Как логировать клики на определенных элементах в системе Управление иконкой в окне alert справа вверху окна Как сделать сортировку дерева с Drag and Drop Редактор кода. Как работать с множественными курсорами
- HOWTO Таблицы
- HOWTO Формы
- Работа с SQL
- HOWTO JS
- HOWTO CSS
- HOWTO Верстка
- Решение проблем
Платформа Falcon Space
Это снижение стоимости владения
за счет меньшего количества людей для поддержки
Это быстрое внесение изменений
по ходу эксплуатации программы
Это современный интерфейс
полная адаптация под мобильные устройства
Бесплатное обучение разработке на Falcon Space
Вы можете разрабатывать самостоятельно или сотрудничать с нами в плане веб-разработки на платформе Falcon Space.
