Проблема с счетчиком

Делаю функцию, если выделен 1 инцидент, то должна работать кнопка адд, если выделено 0 или больше - ошибка.

function btnAddOnClick(Control) {
        var newWindow = Services.GetNewItemByUSI('wnd_IncidentsGridArea');
        var SelectedIDs = newWindow.ComponentsByName('grdData').SelectedIDs;
        debugger;
        var Count = 0;
        Count = SelectedIDs.Count;
        if (Count == 1){
            debugger;
                AddSolution();
            var Count = 0;
        }
        else{
        ShowWarningDialog('Внимание! Выберите один инцидент.');
            return;
        }
}

Дело в том, что инциденты выделяю, а счетчик не меняется. Почему так может происходить? Пробовал с родным гридом, почему то счетчик после 1 нажатия устанавливается 1 и не сбрасывается потом. А не должно быть так.

Нравится

10 комментариев

Вам надо обращаться к гриду в текущем окне, попробуйте так:

function btnAddOnClick(Control) {
        debugger;
        var Count = 0;
        Count = grdData.SelectedIDs.Count;
        if (Count == 1){
            debugger;
                AddSolution();
            var Count = 0;
        }
        else{
        ShowWarningDialog('Внимание! Выберите один инцидент.');
            return;
        }
}

Дело в том, что кнопка на одном гриде, а выделяю строки в другом.
Прилагаю скрин:

http://www.community.terrasoft.ru/system/files/add.jpg

В любом случае вызов GetNewItemByUSI не поможет - он создает новую копию окна.
Вам надо обратиться к существующему.
Если Вы добавляли деталь стандартным образом, то попробуйте так:
1) в функции инициализации детали (в скрипте к разделу) добавьте строку:

	SetAttribute(DetailWindow, 'ParentGrid', BaseWorkspace.Grid);

2) количество выделенных записей получить так:

        Count = Self.Attributes('ParentGrid').SelectedIDs.Count;

Спасибо за совет.
А почему после того, как я выбираю первую существующую запись счетчик уснанавливается 1 и на 0 не сбрасывается. Как бы решить. Если не понятно выразился, завтра приложу скриншоты.

function InitializeSolutionDetail() {
  	IncidentsWorkspace.SolutionWindow = wndSolutionDetail.Window;
	IncidentsWorkspace.SolutionWindow.Prepare();
	IncidentsWorkspace.SolutionDataset =
		IncidentsWorkspace.SolutionWindow.ComponentsByName('dlData').Dataset;
	var DetailWindow = wndSolutionDetail.Window;
	SetAttribute(DetailWindow, 'ParentGrid', BaseWorkspace.Grid);
	var  Count = Self.Attributes('ParentGrid').SelectedIDs.Count;
}

Делаю так, на var Count = Self.Attributes('ParentGrid').SelectedIDs.Count; выскакивает ошибка.

Эта строка должна быть в обработчике кнопки "Добавить", а не в инициализации:

    var  Count = Self.Attributes('ParentGrid').SelectedIDs.Count;

Спасибо. Осталась последняя проблема, первый раз проверка срабатывает и если не выбирать записи в гриде, то выскакивает сообщение выберите инцидент. Мы выбираем запись в гриде - кнопка работает. Снимаем выделение с грида, кнопка все равно работает, count = 1. Хотя должен быть 0.

Олег, каким образом Вы "снимаете выделение с грида" ? Речь идет о верхнем гриде?

Да. Я выставляю дату в фильтре так, чтобы не было ни одной записи в гриде. Следовательно выбранных записей быть не может.

А что возвращает строчка

Self.Attributes('ParentGrid').SelectedIDs.Count

когда Вы нажимаете на кнопку "Добавить" на детали при отсутствии записей в родительском гриде.?
Должна вернуть ноль.

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