2017-07-11 6 views
1

In TcxGridDBtableview, wenn auf Titel Spaltenkopf klicken, gruppiert automatisch nach dieser Spalte. Ich will das nicht, ich möchte nach dieser Spalte sortieren.Gruppierung deaktivieren, wenn Klickkopfspalte in devexpress tcxgrid vcl

Ich möchte es von dieser Spalte beim Zugriff durch Menü gruppiert werden (TcxGridPopupMenu-> Goup von dieser Spalte).

+0

Does not [das gleiche] (https://documentation.devexpress.com/WindowsForms/DevExpress.XtraGrid.Columns.OptionsColumn.AllowSort.property) sind für die Steuerung VCL? Setzen Sie für jede Spalte den 'OptionsColumn.AllowSort' auf' False'? – Victoria

+0

Was Sie beschreiben, ist das Standardverhalten. –

Antwort

0

Klicken Sie einfach auf die Kopfzeile und deaktivieren Sie die Eigenschaften, die Sie nicht benötigen.

enter image description here

1

Wie @Uli Gerhardt erwähnt, ist das gewünschte Verhalten, was ein TcxDBGridTableView aus dem Kasten heraus tun. Sie müssen das Verhalten geändert haben und möglicherweise die Ansicht geändert haben

OptionsCustomize.GroupBySorting 

Dies wird genau das ermöglichen, was Sie beschreiben. Von der DevEx-Hilfe:

Gibt an, ob die Sortierung von Daten nach einer Spalte zur Gruppierung durch diese -Spalte führt.

Syntax

Eigenschaft GroupBySorting: Boolean;

Beschreibung Durch Aktivieren der Option GroupBySorting können Sie das Verhalten von MS Outlook 2003 in das Format emulieren. Dies bedeutet, dass beim Klicken auf eine Spalte die Daten nach den Werten der angeklickten Spalte gruppiert werden. Die zuvor angewendete Gruppierung wird in solchen Fällen gelöscht. Wenn die GroupBySorting-Option deaktiviert ist, wird durch Klicken auf eine Spaltenüberschrift die Daten nach den Werten dieser Spalte sortiert.

Beachten Sie, dass die Option GroupBySorting keine Auswirkung auf die Sortierung über Code hat.

Der Standardwert der GroupBySorting-Eigenschaft ist False.

+0

Danke Nil !. OptionsCustomize.GroupBySorting ist das Böse !. Gelöst – NizamUlMulk

0

Im folgenden Code, SetUpGrid jede Gruppierung bricht auf einem cxGridDBTableView bereits eingerichtet, ermöglicht Spaltensortierung und sortiert die Ansicht auf einer Spalte Namen.

Die Groupby1Click -Methode gruppiert/trennt die Gruppen in einer bestimmten Spalte im Code, indem Sie ihren GroupingIndex festlegen (siehe Online-Hilfe).

procedure TDevexGroupingForm.SetUpGrid; 
var 
    i : Integer; 
begin 
    try 
    cxGrid1DBTableView1.BeginUpdate; 

    // Hide GroupBy panel 
    cxGrid1DBTableView1.OptionsView.GroupByBox := False; 

    // Allow column sorting 
    cxGrid1DBTableView1.OptionsCustomize.ColumnSorting := True; 

    // Undo any existing grouping e.g. set up in IDE 
    for i:= 0 to cxGrid1DBTableView1.ColumnCount - 1 do begin 
     cxGrid1DBTableView1.Columns[i].GroupIndex := -1; 
    end; 

    // Sort TableView on Name column. Needs 'Uses dxCore' 
    cxGrid1DBTableView1Name.SortOrder := soAscending; 

    finally 
    cxGrid1DBTableView1.EndUpdate; 
    end; 

end; 

procedure TDevexGroupingForm.Groupby1Click(Sender: TObject); 
var 
    ACol : TcxGridDBColumn; 
    Index : Integer; 
begin 

    // The following code operates on the focused column of a TcxGridDBTableView 
    // If the view is already grouped by that column, it is ungrouped; 
    // Otherwise, the column is added to the (initially empty) list of columns 
    // by which the view is grouped; 

    Index := TcxGridTableController(cxGrid1DBTableView1.DataController.Controller).FocusedColumnIndex; 
    if Index < 0 then 
    exit; 

    ACol := cxGrid1DBTableView1.Columns[Index]; 
    if ACol = Nil then 
    exit; 

    if ACol.GroupIndex < 0 then begin 
    // Add ACol to the list of grouped Columns 
    ACol.GroupIndex := cxGrid1DBTableView1.GroupedColumnCount + 1; 
    end 
    else begin 
    // Ungroup on ACol 
    ACol.GroupIndex := -1; 
    end; 
end;