Hi,
wie Union schon sagt, du musst auf jeden Fall KeyFields den / die Feldname(n) des PK zuweisen.
Hier mal ein Beispiel, wie ich die PK - Werte hole:
Delphi-Quellcode:
procedure AssignSelectedKeyValues(AView: TcxGridDBTableView; AValues:
TIntegerList);
Var
I : Integer;
RecordId: Variant;
DataController: TcxGridDBDataController;
Controller: TcxGridTableController;
AKeyFields: TList;
begin
DataController := AView.DataController;
Controller := AView.Controller;
AKeyFields := TList.Create;
try
DataController.GetKeyDBFields(AKeyFields);
if AKeyFields.Count = 1 then
begin
if Controller.SelectedRowCount = 0 then
begin
RecordId := DataController.GetRecordId(Controller.FocusedRecordIndex);
if not VarIsNull(RecordId) then
AValues.Add(RecordId);
end
else
begin
for i := 0 to Controller.SelectedRecordCount - 1 do
begin
RecordId := DataController.GetRecordId(Controller.SelectedRecords[i].RecordIndex);
if not VarIsNull(RecordId) then
AValues.Add(RecordId);
end;
end;
end;
finally
AKeyFields.Free;
end;
end;
Du kannst also über den RecordIndex die RecordId (PK) ermitteln.
Frank