Учебник по Showcase: Простой грид

Материал из Course Orchestra
Перейти к: навигация, поиск

Внимание! Изложенная здесь информация устарела! В качестве учебника следует использовать https://share.curs.ru/webhelp/ (work in progress).


Простой грид

Грид - наиболее часто встречающийся тип элемента. Он представляет собой отображение таблицы.

Для того, чтобы отобразить на панели новый элемент типа "грид" необходимо прописать его в соответствующем файле информационной панели. Ниже указан xml для панели с единственным элементом типа "грид".

<?xml version="1.0" encoding="UTF-8"?>
<datapanel>
   <tab id="1" name="Сотрудники и оргструктура">	
      <element id="30" type="grid" proc="orgGrid"/>		
   </tab>	
</datapanel>

Загрузка грида чаще всего проходит одной процедурой, которая может выглядеть следующим образом:

ALTER PROCEDURE [dbo].[orgGrid]
   @main_context nvarchar(512)='' ,  
   @add_context nvarchar(512)='' ,  
   @filterinfo xml='',  
   @session_context xml='',
   @sortcols nvarchar(1024)='', 
   @element_id nvarchar(512)='',
   @gridsettings xml='' output,      
   @error_mes nvarchar(max) = '' output
AS
BEGIN
   SET NOCOUNT ON;

   SELECT 
      o."name" as "Наименование"
      FROM "orgStructure" o 

   SET @gridsettings='
      <gridsettings>
         <columns>
            <col id="Наименование" width="325px"/>
         </columns>
         <properties pagesize="10" autoSelectRecordId="1" profile="gr_withoutExcel.properties"/>
      </gridsettings>';
END

ЧТО ИМЕННО будет отражено на экране возвращается в запросе SELECT. Алиасы столбцов - это заголовки столбцов при отображении грида на экране.

КАК ИМЕННО таблица будет отображаться на экране описывается в переменной @gridsettings. В коде gridsettings используются следующие основные атрибуты:

  • autoSelectRecordId – номер записи (не идентификатор!), которая выделяется при открытии по умолчанию. При этом выполняются события single_click для этой записи.
  • pagesize – количество строк на страницу.
  • profile – имя профайла настроек грида (описание профайла настроек грида смотрите ниже в разделе Описание профайлов настроек грида).

Для того, чтобы настройки для колонки сработали (width="325px"), надо чтобы совпадали названия этого столбца в SELECT и в @gridsettings. В данном случае они совпадают - "Наименование".

Описание профайлов настроек грида

Профайл настроек грида - это файл в userdata/gridproperties, содержащий настройки для конкретного грида. Профайл можно задать в gridsettings в хранимой процедуре грида. Если профайл не задан - используется дефолтный профайл "default.properties". Поэтому в каталоге userdata/gridproperties всегда должен находится этот профайл. В профайле задаются настройки оформления и поведения грида, слабо зависящие от конкретных данных. Настройки, явно зависящие от данных - например, ширины столбцов, размер страницы грида - задаются напрямую в хранимой процедуре. Для задания ширины столбцов используются тэги <col>, а в атрибуте id используется алиас таблицы. Далее приведен список настроек грида с примерами возможных значений (там где назначение настройки не очевидно - добавлены комментарии):

Параметр Возможные значения Комментарий
def.column.hor.align LEFT CENTER RIGHT Расположение значений в столбце
def.num.column.hor.align LEFT CENTER RIGHT Расположение числовых значений в столбце
def.str.column.hor.align LEFT CENTER RIGHT Расположение строковых значений в столбце
def.date.column.hor.align LEFT CENTER RIGHT Расположение значений типа "дата" в столбце
def.image.column.hor.align LEFT CENTER RIGHT Расположение картинок в столбце
def.link.column.hor.align LEFT CENTER RIGHT Расположение ссылок в столбце
def.date.values.format SHORT MEDIUM LONG FULL Формат отображения дат
def.column.value.display.mode SINGLELINE MULTILINE AUTOFIT Способ отображения длинных значений
def.column.width 100px или 10% Ширина колонок по умолчанию
def.value.font.color #000000 Цвет шрифта
def.value.bg.color #000000 Цвет фона
def.value.font.size 1.1em Размер шрифта
def.value.font.bold true false Выделяется жирным
def.value.font.italic true false Выделяется курсивом
def.value.font.underline true false Подчеркнуто
def.value.font.strikethrough true false Зачеркнуто
def.visible.pages.count 5 Максимальное отображаемое число ссылок на странице грида
def.pages.block.duplicate.limit 5 Максимально число записей без дублирования навигации страниц
def.select.whole.record true false Выделение целой записи
single.click.before.double true false Обработка одинарного клика до двойного
def.visible.columns.customizer true false Отображение пользовательских настроек
def.visible.columngroups.customizer true false Отображение пользовательских отображения колонок
def.visible.pager true false Отображение страниц
def.visible.exporttoexcel.currentpage true false Экспорт в Excel текущей страницы
def.visible.exporttoexcel.all true false Экспорт в Excel всех страниц
def.visible.records.selector true false Отображение множественного выбора
def.visible.columns.header true false Отображение заголовка грида
def.visible.copytoclipboard true false Отображение кнопки копирования в буфер обмена

Все настройки являются необязательными. Если их не задать - будут использованы значения, "зашитые" в исходном коде программы.

Самостоятельная работа:

  • 1. Замените в учебном примере файл панели orgStructure.xml на xml из описания выше, также замените процедуру orgGrid на указанную выше. Попробуйте изменить значения атрибутов pagesize, autoSelectRecordId в переменной @gridsettings и посмотрите как это отразится в гриде. Измените некоторые из значений в профайле gr_withoutExcel.properties и посмотрите как это отразится в гриде. (а томкат перезагружать?)
  • 2. Помимо столбца с Наименованием отдела отобразите на экране его id. (в select-запросе пропишите дополнительный столбец)