![]() |
QuantumGrid Multiselect
Weiß jemand, wie man beim DevExpress QuantumGrid im Multiselect-Mode an die "selektierten Records" im DataSet kommt?
GridMode ist bei mir false. Geht das irgendwie? |
AW: QuantumGrid Multiselect
Zitat:
Delphi-Quellcode:
und
TableView.Controller.SelectedRowCount
Delphi-Quellcode:
. Ob sich das mit DataSets verträgt, weiß ich nicht.
TableView.Controller.SelectedRows
|
AW: QuantumGrid Multiselect
Ja, das kenne ich... Da kann ich dann ja auf die einzelnen Rows zugreifen.
Ich möchte aber auf das dahinterliegende DataSet zugreifen. Anscheinend geht das irgendwie mit Bookmarks, aber wie genau, weiß ich leider nicht. |
AW: QuantumGrid Multiselect
Du solltest im Grid ein evtl. auf invisible gesetztes PK-Feld mitführen (ohne das funktioniert ja der non-Gridmode sowieso nicht). Wenn Du das hast, kannst Du ja auch auf das Dataset zugreifen und den entsprechenden Satz finden.
|
AW: QuantumGrid Multiselect
Danke, so hab ich es nun auch gemacht.
|
AW: QuantumGrid Multiselect
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:
Du kannst also über den RecordIndex die RecordId (PK) ermitteln.
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; Frank |
AW: QuantumGrid Multiselect
Du kannst direkt auf den RecordIndex/RecNo des DataSet zugreifen.
Folgende Codeschnipsel dazu:
Code:
var
ARowIndex: Integer; ARowInfo: TcxRowInfo; begin with gridview ... ARowIndex := DataController.GetSelectedRowIndex(SelNoIten); ARowInfo := DataController.GetRowInfo(ARowIndex); Result := DataController.Values[ARowInfo.RecordIndex, GetColumnByFieldName(FieldN).Index]; |
AW: QuantumGrid Multiselect
Zitat:
Das ist bei mir z.B. nie der Fall, da als Beispiel PK' s und FK' s den Benutzer nicht interessieren. Frank |
AW: QuantumGrid Multiselect
nein, erfordert es nicht. ;) Daher der code wie von mir gepostet, das geht über den RowIndex. Das KeyField (im Unterschied zu QG3 eigentlich meist nicht mehr notwendig) benötigt man zum Zugriff auf den RecNo nicht.
|
AW: QuantumGrid Multiselect
Ach ja, irgendwann hatte ich das forEachRow entdeckt und finde es ganz nett.
Vielleicht nützt es ja jemandem...
Delphi-Quellcode:
Frank
...
View.DataController.ForEachRow(True, doForEachRow); ... procedure TFRMMain.doForEachRow(ARowIndex: Integer; ARowInfo: TcxRowInfo); var AKeyFieldValue: Variant; begin if ARowInfo.Level = View.DataController.Groups.GroupingItemCount then begin AKeyFieldValue := View.DataController.GetRecordId(ARowInfo.RecordIndex); MessageDlg(IntToStr(AKeyFieldValue), mtInformation, [mbOK], 0); end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:58 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz