Приветствую коллеги!
Второй раз сталкиваюсь с данной ошибкой, поэтому решил написать на форуме в ожидании фидбэка, наверно от разработчиков.
Есть форма с гридом, в качестве источника данных которой используется MemoryDataset. Есть события, например от кнопок на этой форме, при обработке которых производится редактирование значений текущей записи в датасете. Код редактирования стандартный:
var Dataset = dlData.Dataset;
Dataset.Edit();
Dataset.Values('colName') = 'colValue';
Dataset.Post();
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;
}
}
var Dataset = dlData.Dataset;
if (Dataset.ValAsStr('colName') != 'someValue'){
TextColor = clRed;
}
}
Не понятно почему так происходит. Если убрать CustomDraw, то все встает на свои места.
PS: версия клиента 3.3.0.38
Нравится
1 комментарий
18 февраля 2009 11:37
Здравствуйте, Артем!
Артем, избежать возникновения данной ошибки можно, если во время изменения датасета отключить grdData.HasCustomDraw = false.
Например,
var Dataset = dlData.Dataset; grdData.HasCustomDraw = false; Dataset.Edit(); Dataset.Values('colName') = 'colValue'; Dataset.Post(); grdData.HasCustomDraw = true;
Terrasoft Support Team
Показать все комментарии
Войдите или зарегистрируйтесь, что бы комментировать