Динамический список поиска в DevExpress tcxGrid
Я реализую TcxGrid в приложении Winforms Delphi VCL, где сетка имеет столбец, который является раскрывающимся списком. Я хотел бы представить это как список из нескольких столбцов, поэтому я выбрал cxLookupComboBox для свойств столбца.
Проблема в том, что у каждой строки есть свой набор раскрывающихся элементов, поэтому я изначально реализовал это в событии GetPropertiesForEdit
procedure TfmForm1.gclUnitGetPropertiesForEdit(
Sender: TcxCustomGridTableItem; ARecord: TcxCustomGridRecord;
var AProperties: TcxCustomEditProperties);
begin
inherited;
TcxLookupComboBoxProperties(AProperties).ListSource.DataSet :=
GetItemUnitsListSource(ARecord.RecordIndex);
end;
Затем я обнаружил, что это плохо, потому что это влияет на все строки, поэтому значение, отображаемое в строке X при редактировании строки Y, основано на списке для строки Y, а не на строке X. DevExpress фактически указывает на это в своей документации. Ну что ж.
Я начал переопределять это, создав TcxEditRepository и создав там элемент свойств для каждой строки, когда каждая строка добавляется в сетку. Каждый элемент репозитория имеет свой собственный источник данных и теоретически может сработать, за исключением того, что вы не можете удалить элементы репозитория в коде (по крайней мере, по индексу), поэтому, если пользователь удалил строку или вставил строку в В середине таблицы я больше не мог получить доступ к элементу редактирования репозитория по индексу строки в сетке.
Итак, есть ли у кого-нибудь хорошее решение для использования LookupComboBoxes со специфичными для строки раскрывающимися списками в TcxGrid?
Если нет, может ли кто-нибудь порекомендовать альтернативный тип столбца сетки, который обеспечивает поддержку нескольких столбцов и в идеале не требует много дополнительного кода?