Версия: 3.3.1.67 / MSSQL
Помогите пожалуйста разобраться:
Есть реестр раздела(ну любой в принципе). В нем выделены некоторые элементы (CTRL+Click) :
var IDs = ParentItemIDs.CommaText.split(',');
Вот они у нас в массиве IDs.
ВОПРОС!
Как находясь в скрипте scr_AccessGridArea интерпретировать следующую задачу:
ЕСЛИ пользователь имеет права назначать или удалять или менять права доступа
ТО {
Назначить права доступа к элементам массива IDs значение, противоположное значению DataField.Name; Если было true -> false и наоборот.
Только для пользователя или группы, на чьем имени был кликнут тот или инной DataField (галочка) Изменить. Читать, Удалять
}
Нравится
Игорь, реализовать данный функционал Вы можете доработав функцию dlDataOnDatasetDataChange скрипта scr_AccessGridArea.
[javascript]
function dlDataOnDatasetDataChange(DataField) {
if ((DataField.Name == 'CanRead') || (DataField.Name == 'CanWrite') ||
(DataField.Name == 'CanDelete') ||
(DataField.Name == 'CanChangeAccess')) {
var Dataset = DataField.ParentDataFields.ParentDataset;
Dataset.Post();
// begin
var AdminUnitID = Dataset('AdminUnitID');
var ParentItemIDs = GetAttribute(Self, 'ParentItemIDs');
if (ParentItemIDs.Count > 1) {
var RightsDataset = GetItemRightDataset(AccessGridArea.TableUSI);
RightsDataset.FetchRecordsCount = -1;
RightsDataset.AutoRefresh = false;
RightsDataset.DisableEvents();
try {
var ParentItemID;
for (var i = 0; i <= ParentItemIDs.Count - 1 ; i++) {
ParentItemID = ParentItemIDs.Items(i);
if (AccessGridArea.RecordID == ParentItemID) {
continue;
}
ApplyDatasetFilter(RightsDataset, 'RecordID', ParentItemID, true);
ApplyDatasetFilter(RightsDataset, 'AdminUnitID', AdminUnitID, true);
RightsDataset.Open();
RightsDataset.GotoFirst();
while (!RightsDataset.IsEOF) {
RightsDataset.Edit();
RightsDataset(DataField.Name) = DataField.Value;
RightsDataset.Post();
RightsDataset.GotoNext();
}
RightsDataset.Close();
}
} finally {
RightsDataset.EnableEvents();
}
}
// end
Dataset.Edit();
}
}
[/javascript]