Выгода от использования Falcon Space
В 2-3 раза экономнее и быстрее, чем заказная разработка
Более гибкая, чем коробочные решения и облачные сервисы
Используйте готовые решения и изменяйте под свои потребности
Сортировка строк в таблице
Чтобы включить сортировку строк необходимо в 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
Google поиск по нашей документации
- Шаг 1. Создать концепт проекта
- Шаг 2. Получить оценку бюджета (КП)
- Шаг 3. Заключить договор
- Шаг 4. Создать совместно техническое задание
- Шаг 5. Поэтапная реализация проекта