我有一个DevExpress网格,我想扩展一些包含特定值的组。 我有一年和一周的分组,我希望只有当前年份和本周扩展为默认值。 我一直在寻找一些提示,但还没有找到任何提示。
答案 0 :(得分:1)
问题是“有点”旧,但由于你仍然活跃,我会回答它。
为简单起见,我只使用了两列:“年”和“人口”,所以分组只有“年”。</ p>
以下是示例应用程序的屏幕截图:
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