仅扩展选定的组我的DevExpress网格

时间:2012-08-15 04:11:01

标签: delphi datagrid devexpress grouping

我有一个DevExpress网格,我想扩展一些包含特定值的组。 我有一年和一周的分组,我希望只有当前年份和本周扩展为默认值。 我一直在寻找一些提示,但还没有找到任何提示。

2 个答案:

答案 0 :(得分:1)

问题是“有点”旧,但由于你仍然活跃,我会回答它。

为简单起见,我只使用了两列:“年”和“人口”,所以分组只有“年”。<​​/ p>

以下是示例应用程序的屏幕截图:

Grouping example

  1. 您会看到初始数据。
  2. 我正在使用“年”列对行进行分组。
  3. 我正在以“年”= 1扩展组,我假设当前年= 1。
  4. 
    procedure TfrmMain.btnExpandClick(Sender: TObject);
    const
      CurrentYear = 1;
    var
      i: Integer;
    begin
      for i := 0 to tbvMain.ViewData.RowCount - 1 do
      begin
        // Check if a row is a grouping row.
        if not tbvMain.ViewData.Rows[i].IsData then
        begin
          // Check if a grouping value is the one that you want expanded.
          if tbvMain.ViewData.Rows[i].Values[clmYear.Index] = CurrentYear then
            tbvMain.ViewData.Rows[i].Expand(False);
        end;
      end;
    end;

    procedure TfrmMain.FormCreate(Sender: TObject); var i: Integer; begin // Prepare some random data. Randomize; tbvMain.DataController.RecordCount := 10; for i := 0 to tbvMain.DataController.RecordCount - 1 do begin tbvMain.DataController.Values[i, clmYear.Index] := Random(3) + 1; tbvMain.DataController.Values[i, clmPopulation.Index] := Random(100); end; end;

    这里的关键是检查给定的行是否是数据。如果它不是数据,则它是分组行,为此您需要使用tbvMain.ViewData.Rows[i].IsData

    您可以找到完整的源代码here。请注意,我使用的是Delphi 2009和Dev Express build 56。

答案 1 :(得分:0)

你试过这样的事吗?

TableView1.ViewData.Records[0].Expand(true)

如果当前年份是第一年,否则用正确的记录号码替换0