Приветствую коллеги!
Второй раз сталкиваюсь с данной ошибкой, поэтому решил написать на форуме в ожидании фидбэка, наверно от разработчиков.
Есть форма с гридом, в качестве источника данных которой используется MemoryDataset. Есть события, например от кнопок на этой форме, при обработке которых производится редактирование значений текущей записи в датасете. Код редактирования стандартный:
Dataset.Edit();
Dataset.Values('colName') = 'colValue';
Dataset.Post();
Всё работает нормально, но если попытаться "раскрасить" таблицу (ставлю у грида HasCustomDraw = true и создаю обработчик OnGetRawDrawInfo) отваливается редактирование датасета, на строчке Dataset.Values('colName') = 'colValue'; возникает ошибка Dataset is not in edit or insert mode.
Код обработчика OnGetRawDrawInfo следующий:
var Dataset = dlData.Dataset;
if (Dataset.ValAsStr('colName') != 'someValue'){
TextColor = clRed;
}
}
Не понятно почему так происходит. Если убрать CustomDraw, то все встает на свои места.
PS: версия клиента 3.3.0.38
Нравится
Здравствуйте, Артем!
Артем, избежать возникновения данной ошибки можно, если во время изменения датасета отключить grdData.HasCustomDraw = false.
Например,
[javascript]
var Dataset = dlData.Dataset;
grdData.HasCustomDraw = false;
Dataset.Edit();
Dataset.Values('colName') = 'colValue';
Dataset.Post();
grdData.HasCustomDraw = true;
[/javascript]
Terrasoft Support Team