Скрытие колонки в реестре

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

1.    В обработчике события OnPrepare окна реестра скрыть необходимую колонку.
Колонку нужно скрыть во всех представления (DataGridView) компонента реестра (DataGrid) в окне.
Выяснив, что выполняется условие для скрытия колонки, нужно определить количество представлений реестра:
   

 var GridViewCount = DataGridName.Count;

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

for (var i = 0; i GridViewCount; i++) { // цикл по представлениям реестра
 var DataGridView = grdData.Items(i);
 if (DataGridView.Items(0)) {
  var GridFieldCount = DataGridView.Count; // количество колонок в представлении
  for (var k = 0; k GridFieldCount; k++) { // цикл по колонкам
   var Column = DataGridView.Items(k);
   if (Column.DataField) { // проверка того, что колонка отображает поле из набора данных
    if (Column.DataField.Name == FieldName) { // проверка того, что поле, отображаемое в колонке, - искомое
     DataGridView.RemoveItem(Column); // удалить колонку из представления
     Self.RemoveComponent(Column); // удалить колонку из окна реестра
     break;
    }
   }
  }
 }
}

2. Запретить возможность фильтрации реестра по скрываемому полю

Dataset.DataFields(FieldName).IsFilteringField = false;

3. Скрыть поле ввода в карточке редактирования реестра.
Для этого, в обработчике события OnPrepare окна карточки редактирования реестра соответствующему компоненту установить свойство IsVisible = false.

Нравится

Поделиться

3 комментария

А как данный вариант сказывается на производительности? Стандартный имхо более удобен в настройке и последующей модификации...

Согласен с Александром. С правами доступа "связываться придется" в любом случае.

Думаю, что права доступа и производительность - основные недостатки такого решения...

--
www.it-sfera.com.ua

Показать все комментарии