Проблемы с раскраской ячеек грида

Возникла странная проблема с раскраской ячеек грида... как бы даже никаких идей О_о...
На обработчике grdDataOnGetCellDrawInfo(DataGrid, Column, Color) следующий код:

for (var i=0; i30; i++){
if(DataGrid.SelectedColumn.Name == gvMain.Items(i).Name){
if (DataGrid.DatasetLink.Dataset.DataFields.Items(i+30).Value != null){
edtSelectedType.Value = DataGrid.DatasetLink.Dataset.DataFields.Items(i+30).Value;
} else {
edtSelectedType.Value = '';
}
}
}
var FieldTypeDataset = GetSingleItemByCode('ds_FieldType', null);
if (edtSelectedType.Value != ''){
ApplyDatasetFilter(FieldTypeDataset, 'ID', edtSelectedType.Value, true);
FieldTypeDataset.Open();
edtSelectedType.Value = FieldTypeDataset.Values('Name');
}

Задача изначально следующая: показывать в edtSelectedType.Value значение относительно выделенной ячейки грида.

Пример странной работы:
- Встали на ячейку - отображается правильно.
- Встали на другую ячейку(ОДИНАРНЫМ нажатием левой кнопки мыши) - ничего не произошло. При повторном клике по этой же ячейке отображается верно.
- Далее... Если мы переходим с ячейки на ячейку которая ниже по текущей колонке, то значение меняется(то есть работает корректно). НО! Если двигаемся вверх, то значение отображается только при повторном нажатии по полю.

Самое странное, то что значение edtSelectedType.Value пропадает при MouseMove по гриду, ПРИЧЕМ ТОЛЬКО ВВЕРХ и только тогда когда мышка пересекает ГРАНИЦУ САМОГО КОНТРОЛА грида О_о ...

ЗЫ: при описании метода grdDataOnSelectionChange(DaraGrid) входной параметр DaraGrid... мелочь, но все же)

Нравится

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

Добрый день, Юрий.
Решать задачу отображения значения выделенной ячейки реестра в отдельном контроле лучше всего на основе события OnSelectionChange компонента DataGrid. В обработчике этого события можно считывать значение DataGrid.SelectedColumn.DataField.Name, и делать выводы о том, колонка для какого поле набора данных выделена в реестре в данный момент. Затем считывать значение этого поля и отображать в элементе управления.
Использовать для этой цели событие OnGetCellDrawInfo некорректно, т.к. механизмы отрисовки элементов окна содержат элементы ускорения производительности и указанное событие не вызывается в случае, если ячейка уже была отрисована, и набор данных не изменялся.
Насчет DaraGrid - замечание зафиксировано, будет исправлено в будущих версиях.

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