点击标题列标题后,TcxGridDBtableView
会自动按该列分组。我不想那样,我想按那个专栏订购。
我想通过菜单(TcxGridPopupMenu
- > Goup by this column )访问该列时按列分组。
答案 0 :(得分:1)
正如@Uli Gerhardt所提到的,您期望的行为是TcxDBGridTableView
开箱即用的行为。您必须更改行为,可能会更改视图
OptionsCustomize.GroupBySorting
这将完全符合您的描述。来自DevExpress的帮助:
指定按列对数据排序是否会导致按此分组 柱。
语法
属性GroupBySorting:Boolean;
说明启用GroupBySorting选项可以模拟 MS Outlook 2003的行为。这意味着单击一列 标题会导致按点击列的值对数据进行分组。该 在这种情况下,先前应用的分组将被清除。如果 GroupBySorting选项已禁用,单击列标题会导致 按此列的值排序数据。
请注意,如果通过代码进行排序,则GroupBySorting选项无效。
GroupBySorting属性的默认值为False。
答案 1 :(得分:0)
答案 2 :(得分:0)
在下面的代码中,SetUpGrid
取消了已在cxGridDBTableView上设置的任何分组,
启用列排序并对名称列上的视图进行排序。
Groupby1Click
方法通过设置GroupingIndex(请参阅在线帮助)对代码中给定列进行分组/取消分组。
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;