AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

QuantumGrid Multiselect

Ein Thema von Morphie · begonnen am 5. Dez 2012 · letzter Beitrag vom 6. Dez 2012
Antwort Antwort
Morphie

Registriert seit: 27. Apr 2008
Ort: Rahden
630 Beiträge
 
#1

QuantumGrid Multiselect

  Alt 5. Dez 2012, 10:42
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?
  Mit Zitat antworten Zitat
Benutzerbild von uligerhardt
uligerhardt

Registriert seit: 19. Aug 2004
Ort: Hof/Saale
1.735 Beiträge
 
Delphi 2007 Professional
 
#2

AW: QuantumGrid Multiselect

  Alt 5. Dez 2012, 11:01
Weiß jemand, wie man beim DevExpress QuantumGrid im Multiselect-Mode an die "selektierten Records" im DataSet kommt?
GridMode ist bei mir false.
In meinem nicht DB-gebundenen Grid benutze ich TableView.Controller.SelectedRowCount und TableView.Controller.SelectedRows . Ob sich das mit DataSets verträgt, weiß ich nicht.
Uli Gerhardt
  Mit Zitat antworten Zitat
Morphie

Registriert seit: 27. Apr 2008
Ort: Rahden
630 Beiträge
 
#3

AW: QuantumGrid Multiselect

  Alt 5. Dez 2012, 11:03
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.
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.487 Beiträge
 
Delphi 7 Enterprise
 
#4

AW: QuantumGrid Multiselect

  Alt 5. Dez 2012, 12:45
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.
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
Morphie

Registriert seit: 27. Apr 2008
Ort: Rahden
630 Beiträge
 
#5

AW: QuantumGrid Multiselect

  Alt 5. Dez 2012, 12:52
Danke, so hab ich es nun auch gemacht.
  Mit Zitat antworten Zitat
Benutzerbild von dataspider
dataspider

Registriert seit: 9. Nov 2003
Ort: 04539 Groitzsch
1.350 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: QuantumGrid Multiselect

  Alt 5. Dez 2012, 12:55
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
Frank Reim
  Mit Zitat antworten Zitat
DSCHUCH

Registriert seit: 6. Jun 2007
Ort: Dresden
185 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#7

AW: QuantumGrid Multiselect

  Alt 5. Dez 2012, 16:04
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];
  Mit Zitat antworten Zitat
Benutzerbild von dataspider
dataspider

Registriert seit: 9. Nov 2003
Ort: 04539 Groitzsch
1.350 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: QuantumGrid Multiselect

  Alt 5. Dez 2012, 16:22
Du kannst direkt auf den RecordIndex/RecNo des DataSet zugreifen.
...was erfordert, dass die KeyFields auch als Spalte in der Grid vorhanden sind.
Das ist bei mir z.B. nie der Fall, da als Beispiel PK' s und FK' s den Benutzer nicht interessieren.

Frank
Frank Reim
  Mit Zitat antworten Zitat
DSCHUCH

Registriert seit: 6. Jun 2007
Ort: Dresden
185 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#9

AW: QuantumGrid Multiselect

  Alt 5. Dez 2012, 16:40
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.

Geändert von DSCHUCH ( 5. Dez 2012 um 16:43 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von dataspider
dataspider

Registriert seit: 9. Nov 2003
Ort: 04539 Groitzsch
1.350 Beiträge
 
Delphi 11 Alexandria
 
#10

AW: QuantumGrid Multiselect

  Alt 6. Dez 2012, 10:04
Ach ja, irgendwann hatte ich das forEachRow entdeckt und finde es ganz nett.
Vielleicht nützt es ja jemandem...
Delphi-Quellcode:
...
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;
Frank
Frank Reim
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:34 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz