К идее http://www.community.terrasoft.ru/ideas/9586
А вот вам и решение
Не уверен, что не вызовет где-нибудь конфликта, но пока полет нормальный
Модифицировал scr_BaseGridArea.
Обращаю внимание, что это затронет только гриды на базе BaseGridArea.
1. Добавляем функции в scr_BaseGridArea
function UpdateGridForIDFields(Window) {
if (!Connector.CurrentUser.IsAdmin) return;
var Grid = GetGrid(Window);
if (Assigned(Grid)) {
var Count = Grid.Count;
for (var i = 0; i Count; i++) {
var GridView = Grid.Items(i);
var ComponentName = 'col' + 'ID' + GridView.Name;
if (Assigned(Window.ComponentsByName(ComponentName))) return
var DataGridColumn = Window.CreateComponent('DataGridColumn', ComponentName);
DataGridColumn.DataFieldName = 'ID';
DataGridColumn.IsVisible = false;
GridView.Add(DataGridColumn);
}
}
}
function GetGrid(Window) {
var Count = Window.ComponentCount;
for (var i = 0; i Count; i++) {
var Component = Window.Components(i);
if ((Component.TypeCode == 'DataGrid') || (Component.TypeCode == 'DataTreeGrid')) {
return Component;
}
}
return null;
}
if (!Connector.CurrentUser.IsAdmin) return;
var Grid = GetGrid(Window);
if (Assigned(Grid)) {
var Count = Grid.Count;
for (var i = 0; i Count; i++) {
var GridView = Grid.Items(i);
var ComponentName = 'col' + 'ID' + GridView.Name;
if (Assigned(Window.ComponentsByName(ComponentName))) return
var DataGridColumn = Window.CreateComponent('DataGridColumn', ComponentName);
DataGridColumn.DataFieldName = 'ID';
DataGridColumn.IsVisible = false;
GridView.Add(DataGridColumn);
}
}
}
function GetGrid(Window) {
var Count = Window.ComponentCount;
for (var i = 0; i Count; i++) {
var Component = Window.Components(i);
if ((Component.TypeCode == 'DataGrid') || (Component.TypeCode == 'DataTreeGrid')) {
return Component;
}
}
return null;
}
2. Добавляем вызов UpdateGridForIDFields на OnPrepare
function wnd_BaseGridAreaOnPrepare(Window) {
InitializeGridArea(Window, BaseGridArea, dlData);
InitializeGridAreaHotKeyList(Window);
UpdateGridForIDFields(Window); // test
}
InitializeGridArea(Window, BaseGridArea, dlData);
InitializeGridAreaHotKeyList(Window);
UpdateGridForIDFields(Window); // test
}
21 июля 2013 23:27
исправление:
надо еще проверку добавить
if (Assigned(Window.ComponentsByName(ComponentName))) return
4 декабря 2013 15:13
Справочники используют свое окно (где грид пересоздается). Чтобы это сработало и с ними, надо в wnd_DictionaryGridAreaScript в функцию добавить UpdateGridForIDFields(Window):
function wnd_DictionaryGridAreaOnPrepare(Window) { wnd_BaseGridAreaOnPrepare(Window); Initialize(Window); UpdateGridForIDFields(Window); /* 3.4.0 if (!DictionaryGridArea.ExternalOpening) { BaseGridArea.GridDataset.Open(); } */ }
если код функции у вас не в scr_BaseGridArea - не забудьте подключить
Показать все комментарии
Войдите или зарегистрируйтесь, что бы комментировать