Динамический список поиска в 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?

Если нет, может ли кто-нибудь порекомендовать альтернативный тип столбца сетки, который обеспечивает поддержку нескольких столбцов и в идеале не требует много дополнительного кода?

0 ответов

Другие вопросы по тегам