![]() |
cxGrid Anzahl selektierter Datensätze
Ich hoffe hier gibt es einige die sich mit dem Express Quantum Grid auskennen.
Denn genau da liegt grade mein Problem. Ich habe schon eine Funktion gefunden die mir eigentlich die Anzahl der selektierten Reihen zurückgeben sollte, und zwar tableView.Controller.SelectedRecordCount. Problem ist nur das mir diese Funktion (und auch alle anderen die ich probiert habe) nur Werte > 1 zurückgeben. Also auch wenn ich als Benutzer kein Datensatz angeklickt habe gibt mir diese Funktion "1" zurück. Wenn ich mehrere makiere gibt sie mir allerdings immer die richtige Zahl mit. Ich denke das hängt irgendwie mit diesem "internen Pointer" in der Datenmenge zusammen der ja immer auf ein Feld zeigt. (Zu steuern mit First, Last, Next, Previous) Ich nutze eine SOAPMemTable als Datenquelle und glaube das eben dieser Pointer vom Grid auch als Selektion gewertet wird da nämlich genau der Datensatz, auf dem der Pointer steht etwas grau hinterlegt ist im Grid. Gibt es eine Möglichkeit zu erkennen wieviele Datensätze wirklich vom Benutzer selektiert worden sind? Also wenn keine Auswahl getroffen wurde auch ein "0" zurückgegeben wird? |
AW: cxGrid Anzahl selektierter Datensätze
Ist der fokussierte Datensatz nicht auch immer selektiert?
|
AW: cxGrid Anzahl selektierter Datensätze
Nein, vorallem wenn Multiselect, dann muß das nicht so sein.
|
AW: cxGrid Anzahl selektierter Datensätze
Doch. :-)
Habe ein TdxMemData (drei zeilen mit testdaten), ein Datasource, ein TcxGrid mit einem DBGridTableView und einen Timer. Beim Start zeigt mir der Timer, das 0 Reihen selektiert sind. Klicke ich eine Zeile an dann ist N=1 und die selektierte Zeile wird angezeigt, bewege ich den Fokus mit den Cursortasten, bleibt die eins bestehen und ich sehe auch, welche Zeile selektiert ist. Hier ein hingerotzter Test.
Delphi-Quellcode:
Und die DFM.
unit Unit14;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, cxGraphics, cxControls, cxLookAndFeels, cxLookAndFeelPainters, cxStyles, cxCustomData, cxFilter, cxData, cxDataStorage, cxEdit, DB, cxDBData, StdCtrls, ExtCtrls, cxGridCustomTableView, cxGridTableView, cxGridDBTableView, dxmdaset, cxGridLevel, cxClasses, cxGridCustomView, cxGrid; type TForm14 = class(TForm) cxGrid1DBTableView1: TcxGridDBTableView; cxGrid1Level1: TcxGridLevel; cxGrid1: TcxGrid; DataSource1: TDataSource; dxMemData1: TdxMemData; dxMemData1Feld: TStringField; cxGrid1DBTableView1RecId: TcxGridDBColumn; cxGrid1DBTableView1Feld: TcxGridDBColumn; Timer1: TTimer; Label1: TLabel; procedure Timer1Timer(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form14: TForm14; implementation {$R *.dfm} procedure TForm14.Timer1Timer(Sender: TObject); Var i : Integer; s : String; begin s := IntToStr(cxGrid1DBTableView1.Controller.SelectedRowCount)+' rows selected: '; for I := 0 to cxGrid1DBTableView1.Controller.SelectedRowCount - 1 do s := s + VarToStr(cxGrid1DBTableView1.Controller.SelectedRows[i].Values[0])+', '; Label1.Caption := s; end; end.
Code:
object Form14: TForm14
Left = 0 Top = 0 Caption = 'Form14' ClientHeight = 243 ClientWidth = 527 Color = clBtnFace Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -11 Font.Name = 'Tahoma' Font.Style = [] OldCreateOrder = False PixelsPerInch = 96 TextHeight = 13 object Label1: TLabel Left = 169 Top = 15 Width = 31 Height = 13 Caption = 'Label1' end object cxGrid1: TcxGrid Left = 146 Top = 41 Width = 367 Height = 200 TabOrder = 0 object cxGrid1DBTableView1: TcxGridDBTableView NavigatorButtons.ConfirmDelete = False DataController.DataSource = DataSource1 DataController.Summary.DefaultGroupSummaryItems = <> DataController.Summary.FooterSummaryItems = <> DataController.Summary.SummaryGroups = <> OptionsSelection.MultiSelect = True object cxGrid1DBTableView1RecId: TcxGridDBColumn DataBinding.FieldName = 'RecId' Visible = False end object cxGrid1DBTableView1Feld: TcxGridDBColumn DataBinding.FieldName = 'Feld' end end object cxGrid1Level1: TcxGridLevel GridView = cxGrid1DBTableView1 end end object DataSource1: TDataSource DataSet = dxMemData1 Left = 257 Top = 126 end object dxMemData1: TdxMemData Active = True Indexes = <> Persistent.Data = { 5665728FC2F5285C8FFE3F01000000140000000100050046656C640001010000 0031010100000032010100000033} SortOptions = [] Left = 318 Top = 107 object dxMemData1Feld: TStringField FieldName = 'Feld' end end object Timer1: TTimer Interval = 100 OnTimer = Timer1Timer Left = 267 Top = 136 end end |
AW: cxGrid Anzahl selektierter Datensätze
Kann ist so bestätigen.
Wenn das cxGrid erst einmal den Focus hatte, dann ist der SelectedRowCount bzw. der SecectedRecordCount immer >= 1. Da hilft die Property "unselectFocusedRecordOnExit) auch nicht weiter. Der DevExpress Support ist echt Klasse. Schau doch mal in die DevExpress Website. Die Frage kam bestimmt schon mal und wurde sicher auch beantwortet. Falls nicht, mach kurz ein neues Ticket auf. Alternativ kannst Du ggf. auch eine TcxCheckbox Column als "unbound column" in den TableView einfügen und den Benutzer die zu selektierenden Datensätze einfach per Checkbox auswählen lassen. Dann muss der User nicht auf den Focus des cxGrids achten ... |
AW: cxGrid Anzahl selektierter Datensätze
Zitat:
Wenn ich Multiselect habe funktioniert es anstandslos. Aber eigentlich wollte ich kein Multiselect zulassen. Aber auf jedenfall schonmal ein Hinweis. Danke ;) Zitat:
|
AW: cxGrid Anzahl selektierter Datensätze
Na dann wirst Du wohl im Code irgend etwas machen, das eine Zeile selektiert/fokusiert wird, z.B. den Datensatzzeiger des TDatasets bewegen (glaube ich).
Ruf einfach
Delphi-Quellcode:
auf.
cxGrid1DBTableView1.Controller.ClearSelection
PS: SelectedRowCount ist immer 1, wenn MultiSelect nicht an ist. |
AW: cxGrid Anzahl selektierter Datensätze
Zitat:
Schwups, schon ist der Fokusierte nicht selektiert. Und ansonsten ist, bei allen Komponenten, auch ohne Multiselect das Fokusierte auch selektiert, wenn es dort etwas wie FocusOnSelect gibt. DevExpress kann z.B. das bei Rechtsklick nicht so behandeln, womit da eventuell für das Kontextmenü zwar der Fokus umgesetzt wird, aber nicht die Selection. |
AW: cxGrid Anzahl selektierter Datensätze
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:57 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 by Thomas Breitkreuz