Guest User

Untitled

a guest
Oct 10th, 2020
47
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 * from @result
  38.     order by  
  39.         case when @sort = 'name' and @direction = 'down' then name end desc,
  40.         case when @sort = 'name' and @direction = 'up' then name end asc,
  41.         case when @sort = 'code' and @direction = 'down' then code end desc,
  42.         case when @sort = 'code' and @direction = 'up' then code end asc
  43.     OFFSET @PageSize * (@Page - 1) ROWS
  44.     FETCH NEXT @PageSize ROWS ONLY;
  45.    
  46.     -- 2 SELECT - кол-во в таблице
  47.     select count(*) from @result   
  48.  
  49.     -- 3 SELECT Дополнительные настройки таблицы (их необязательно указывать)
  50.     Select  'Отделы' Title,  -- заголовок можно задать здесь либо через статичные настройки компонента
  51.         '' ToolbarAdditional,
  52.         '' GroupOperationsToolbar,
  53.         'Нет отделов' EmptyText,
  54.         'Добавить отдел' FastCreateLinkText, 'Создание отдела' FastCreateDialogHeader, '' FastCreateDialogPlaceholder,
  55.         0 FastCreateSearch, 0 FastCreateTextarea,
  56.          1 HideTitleCount,
  57.          0 DisableCellTitle,
  58.          '14px' FontSize,
  59.          '' FilterMakeup,
  60.          1 InstantFilter
  61.          
  62.           --'gantt' ViewType,
  63.         -- GanttScale, GanttNavigate, GanttItemForm, GanttItemFormTitle
  64.         -- KanbanItemForm, KanbanItemFormTitle
  65.  
  66.     -- 4 SELECT Данные для подвала страницы или данные для Ганта/Канбана (если установлен ViewType в 3 SELECT)
  67.  
  68. END
  69.  
RAW Paste Data