![]() |
DevExpress Grid: Record Daten
Hallöle...:P
Es ist heute nicht mein Tag... :? Gegeben: Ein Grid mit MultiSelect und z.B. 3 selected Rows mit einer Spalte im Dataset "IdType (Integer)". IdType z.B. = (0, 1, 2) Soll: Ich muß im OnFocusedRecordChanged (oder ähnliches (SelectionChanged)) ermitteln ob ALLE SELECTED ROWS den gleichen IdType haben. Wenn es so ist, dann ist das Funktionsresult der IdType, ansonsten -1. Hintergrund: Ist der IdType identisch, wird ein Button enabled. Frage: Wie komme ich an den IdType der Spalte auch bei ungleichen Positionen der Spalte im Dataset. Danke... |
AW: DevExpress Grid: Record Daten
Ich hoffe, ich habe dein Problem richtig verstanden.
Ich habe mir dafür mal einen Helper (für den DataController) gebastelt.
Delphi-Quellcode:
Hier werden die Werte eines beliebigen Feldes in eine Liste geschrieben.
procedure TcxGridDBDataControllerHelper.GetFieldStringValues(AValues:
TGenericStringList; const AFieldName: string; const AAllRecords: Boolean = True); Var I: Integer; AItem: TcxCustomGridTableItem; AItemIndex: Integer; procedure AddValue(const AValue: Variant); Var AStringValue: string; begin AStringValue := VarToStr(AValue); if (AStringValue <> '') then AValues.Add(AStringValue); end; begin if (Controller.SelectedRecordCount = 0) and not AAllRecords then Exit; if DataModeController.GridMode then raise Exception.Create('Methode in GridMode nicht möglich'); AItem := GetItemByFieldName(AFieldName); if AItem = nil then Exit; AItemIndex := AItem.Index; if (Controller.SelectedRecordCount > 1) then begin for i := 0 to Controller.SelectedRecordCount - 1 do AddValue(Controller.SelectedRecords[i].Values[AItemIndex]); end else if AAllRecords then begin for i := 0 to FilteredRecordCount - 1 do AddValue(Values[FilteredRecordIndex[i], AItemIndex]); end else AddValue(Controller.FocusedRecord.Values[AItemIndex]); end; Ich brauchte die Werte zur Weiterverwendung im SQL für ein IN Statement. Ist es das was du suchst? Frank |
AW: DevExpress Grid: Record Daten
Danke erst Mal...:P
Dein Beispiel hilft mir schon weiter. Ich habe noch Probleme mit den Begriffsdefinitionen und das passende Event auszusuchen...:? |
AW: DevExpress Grid: Record Daten
Im GridView.DataController findest du alle Records,
im GridView.Controller die gefilterten und selektierten Records Rows und den Fokusierten. Die Selektion versteckt sich aber teilweise auch im DataController (hat sich bissl verlaufen) Auf das DataSet solltest du bei sowas niemals zugreifen, denn da steht standardmäßig der fokusierte Datensatz drin (Grid und DataSet werden synchronisiert) Im DataController müssen aber nicht unbedingt alle Daten drin sein (wenn der GridMode besagt, dass nicht alles geladen werden soll, was grade eh nicht sichtbar ist) Willst/musst du dennoch auf das DataSet zugreifen, also auf andere Records, dann aufpassen dass nichts mit deiner Fokusierung/Selektierung passiert, wenn "kurzzeitig" der Record gewechselt wird. Ich hatte mir mal paar Hilffunktionen geschrieben, welche die Daten der Selektierten oder gefilterten Rows liefern. Hier muß man bissl aufpassen, bezüglich Record und Row. Record die Quelldaten im DataSet und die Copy im DataController und Row die Zuordnung zur Zeile im Grid. Vorallem welche Indize man wo verwendet (Rows/FilteredRow/SelectedRow und Records/FilteredRecord/SelectecRecord). |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:47 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