0

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

4

2 回答 2

2

这个问题“有点”老了,但既然你还很活跃,我会回答的。

为简单起见,我只使用了两列:“年份”和“人口”,因此分组仅按“年份”。

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

分组示例

  1. 您会看到一个初始数据。
  2. 我正在使用“年”列对行进行分组。
  3. 我正在扩展“年份”= 1 的组,我假设当前年份 = 1。


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

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

于 2015-04-03T07:05:13.967 回答
0

你有没有尝试过这样的事情?

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

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

于 2012-08-15T09:30:38.667 回答