Ошибка: Dataset is not in edit or insert mode

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

var Dataset = dlData.Dataset;
Dataset.Edit();
Dataset.Values('colName') = 'colValue';
Dataset.Post();

Всё работает нормально, но если попытаться "раскрасить" таблицу (ставлю у грида HasCustomDraw = true и создаю обработчик OnGetRawDrawInfo) отваливается редактирование датасета, на строчке Dataset.Values('colName') = 'colValue'; возникает ошибка Dataset is not in edit or insert mode.
Код обработчика OnGetRawDrawInfo следующий:
function DataGridOnGetRowDrawInfo(DataGrid, Color, TextColor, ImageName, Font) {
        var Dataset = dlData.Dataset;
        if (Dataset.ValAsStr('colName') != 'someValue'){
                TextColor = clRed;
        }
}

Не понятно почему так происходит. Если убрать CustomDraw, то все встает на свои места.
PS: версия клиента 3.3.0.38

Нравится

1 комментарий

Здравствуйте, Артем!

Артем, избежать возникновения данной ошибки можно, если во время изменения датасета отключить grdData.HasCustomDraw = false.

Например,

var Dataset = dlData.Dataset;
grdData.HasCustomDraw = false;
Dataset.Edit();
Dataset.Values('colName') = 'colValue';
Dataset.Post();
grdData.HasCustomDraw = true;

Terrasoft Support Team

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