Демостенд этой возможности - /tst-form-treeview
Выбираем тип поля Дерево с галочками (treeCheckboxes).
Указываем в процедуре dict дерево в виде списка Value, Value2 (здесь будет parentID), Text
CREATE PROCEDURE [dbo].[fm_tst-form-treeview_f1_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
END
В процедуре GetItem необходимо передать текущие выбранные галочки через запятую.
CREATE PROCEDURE [dbo].[fm_tst-form-treeview_getItem]
@itemID int,
@username nvarchar(256)
AS
BEGIN
select
STUFF((SELECT ',' + cast(id as nvarchar)
FROM tst_categories
WHERE selected=1
FOR XML PATH('')), 1, 1,'') f1 -- выделенные категории
END
В процедуре SaveItem сохраняем значения галочек (они приходят как выбранные значения через запятую).
CREATE PROCEDURE [dbo].[fm_tst-form-treeview_saveItem]
@username nvarchar(256),
@itemID int,
@parameters ExtendedDictionaryParameter READONLY
AS
BEGIN
declare @pf1 nvarchar(max)
select @pf1 = Value2 from @parameters where [key]='f1'
exec as_print @str = @pf1
update tst_categories
set selected= 0
update tst_categories
set selected= 1
where id in (select Value from dbo.split(@pf1,',') where Value<>'')
-- SELECT 1 (Result, Msg, SuccessUrl, HideFormAfterSubmit, RefreshContainer)
select 1 Result, 'OK' Msg, '' SuccessUrl, 0 HideFormAfterSubmit, '' RefreshContainer
END