hecrus

CRUD GetItems with sub_ table

Oct 10th, 2020
768
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. CREATE PROCEDURE [dbo].[crud_deps_getItems]
  2.     @filters CRUDFilterParameter READONLY,    -- здесь приходят фильтры, а также парапметры из URL (также здесь передаются спец параметры, например язык langID).
  3.     @sort sql_variant, -- по какому полю сортировка
  4.     @direction nvarchar(8), -- направление сортировки (up down)
  5.     @page int, -- текущая страница данных в таблицы
  6.     @pageSize int, -- размер пагинации
  7.     @username nvarchar(32) -- текущий пользователь (на его основе можно дополнительно проверять права)
  8. AS
  9. BEGIN
  10.     -- основная процедура настройки таблицы
  11.     -- спецполя для нее: icon_age, prev_age, prevcolor_age, color_age, backcolor_age, desc_name, color, barPercent_age, barClass_age, badge_age  
  12.      
  13.     declare @result TABLE(
  14.         id nvarchar(max),
  15.         name nvarchar(max),
  16.         code nvarchar(max),
  17.         managerID nvarchar(max)
  18.     )  
  19.  
  20.     -- извлекаем фильтр
  21.     declare @filterName nvarchar(128)
  22.     select @filterName = Value from @filters where [Key] = 'name'
  23.    
  24.     -- извлекаем требуемые данные из таблицы отделов
  25.     -- обязательно используйте isnull (NULL в поле в 1 строке означает что столбец совсем не будет выводиться - это дает больше гибкости при выводе таблицы)
  26.     insert into @result
  27.     select
  28.         id,
  29.         isnull(name, '') name,
  30.         isnull(code, '')  code,
  31.         isnull((select fio from hr_humans where id = managerID), '') managerID
  32.     from hr_departments
  33.     where (isnull(@filterName, '')='' or code like '%'+@filterName+'%'  or name like '%'+@filterName+'%')
  34.    
  35.     -- 1 SELECT - сами данные для таблицы
  36.     -- здесь организуем работу сортировки по параметрам а также работу пагинации.
  37.     select *,
  38.         '<div class="as-table" data-code="humans" data-itemID="'+cast(id as nvarchar)+'">' sub_name
  39.     from @result
  40.     order by  
  41.         case when @sort = 'name' and @direction = 'down' then name end desc,
  42.         case when @sort = 'name' and @direction = 'up' then name end asc,
  43.         case when @sort = 'code' and @direction = 'down' then code end desc,
  44.         case when @sort = 'code' and @direction = 'up' then code end asc
  45.     OFFSET @PageSize * (@Page - 1) ROWS
  46.     FETCH NEXT @PageSize ROWS ONLY;
  47.    
  48.     -- 2 SELECT - кол-во в таблице
  49.     select count(*) from @result   
  50.  
  51.     -- 3 SELECT Дополнительные настройки таблицы (их необязательно указывать)
  52.     Select  'Отделы' Title,  -- заголовок можно задать здесь либо через статичные настройки компонента
  53.         '' ToolbarAdditional,
  54.         '' GroupOperationsToolbar,
  55.         'Нет отделов' EmptyText,
  56.         'Добавить отдел' FastCreateLinkText, 'Создание отдела' FastCreateDialogHeader, '' FastCreateDialogPlaceholder,
  57.         0 FastCreateSearch, 0 FastCreateTextarea,
  58.          1 HideTitleCount,
  59.          0 DisableCellTitle,
  60.          '14px' FontSize,
  61.          '' FilterMakeup,
  62.          1 InstantFilter
  63.          
  64.           --'gantt' ViewType,
  65.         -- GanttScale, GanttNavigate, GanttItemForm, GanttItemFormTitle
  66.         -- KanbanItemForm, KanbanItemFormTitle
  67.  
  68.     -- 4 SELECT Данные для подвала страницы или данные для Ганта/Канбана (если установлен ViewType в 3 SELECT)
  69.  
  70. END
  71.  
RAW Paste Data