Здравствуйте!
Подскажите, можно ли добавить поле с кнопкой в грид?
Так чтобы кнопка была на против каждой записи и ее можно было отображать и скрывать по желанию.
Или может быть добавить картинку кнопки и обрабатывать ее нажатие. Но в этом случае мне не нравится то, что картинку для каждой записи придется хранить в таблице и добавлять каждой новой записи.
Подскажите, как это правильно реализовать.
Нравится
Здравствуйте.
К сожалению, нельзя обработать событие нажатия на отдельную ячейку определенной строки. Предлагаю в окне реестра записей добавить кнопку (под самим реестром, к примеру), и на событии OnDatasetAfterPositionChange, для объекта dlData, считать значение определенной ячейки и, в зависимости от этого, скрывать или отображать данную кнопку.
[javascript]
if (Dataset('SomeField') == 'this')
{
Button.IsVisible = false;
}
else
{
Button.IsVisible = true;
}
[/javascript]
А если так:
В гриде есть событие OnLookupColumnClick для кликов по лукапным колонкам. Поле в датасете не трогаем, а колонку в гриде делаем со свойством LookupType равным dgcltLookup.
Пишем обработчик вроде:
[javascript]
function grdDataOnLookupColumnClick(DataGrid, DataGridColumn, Shift) {
if (DataGridColumn.Name == 'colTitle') {
ShowInformationDialog('Заголовок:' + dlData.Dataset('Title'));
return;
}
scr_BaseGridArea.grdDataOnLookupColumnClick(DataGrid, DataGridColumn, Shift);
}
[/javascript]
Вместо messagebox'а подставить открытие нужного окна.