Delphi cxGrid刷新代码中的页脚值

Delphi cxGrid刷新代码中的页脚值,delphi,devexpress,tcxgrid,Delphi,Devexpress,Tcxgrid,在cxGrid中显示或隐藏已实现页脚(SUM)的列(代码中)时,它不会刷新其值 如何在代码中刷新页脚 使用此选项: procedure TForm1.cxGrid2DBTableView1CustomDrawFooterCell( Sender: TcxGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridColumnHeaderViewInfo; var ADone: Boolean); begin cxgrid2DBTableView1.D

在cxGrid中显示或隐藏已实现页脚(SUM)的列(代码中)时,它不会刷新其值

如何在代码中刷新页脚

使用此选项:

procedure TForm1.cxGrid2DBTableView1CustomDrawFooterCell(
Sender: TcxGridTableView; ACanvas: TcxCanvas;
AViewInfo: TcxGridColumnHeaderViewInfo; var ADone: Boolean);
begin
cxgrid2DBTableView1.DataController.Summary.Recalculate;
end;
…使窗体上的所有其他DevXPress组件无法正确重新绘制。看不到任何内容

编辑: 要在网格中显示或隐藏字段,请使用:

    procedure TForm1.cxCheckBox1Click(Sender: TObject);
    var
    C:TcxGridDBColumn;
    begin
    C := cxGrid1DBTableView1.GetColumnByFieldName('PP');
    if Assigned(C) then C.Visible := not C.Visible;
    begin
          absquery2.Edit;
          absquery2.FieldByName('PP').AsCurrency := 15 * ABSQuery2.FieldByName('days').asInteger;
          if C.Visible then  begin
          ABSQuery2.FieldByName('total').asCurrency := (ABSQuery2.FieldByName('total').AsCurrency) + (ABSQuery2.FieldByName('PP').AsCurrency) ;
          end else begin
          ABSQuery2.FieldByName('total').asCurrency := (ABSQuery2.FieldByName('total').AsCurrency) - (ABSQuery2.FieldByName('PP').AsCurrency);
          ABSQuery2.Post;
          ABSQuery2.Refresh;
          end;

end;
end;
在查询的计算字段上,我有:

procedure TForm1.ABSQuery2CalcFields(DataSet: TDataSet);
begin
case cxradiogroup1.ItemIndex of
0: begin
absquery2.FieldByName('tt').value := 1.30;
if (absquery2.FieldByName('room_type').asstring = 'SGL') then begin
absquery2.FieldByName('TTS').value := absquery2.FieldByName('days').value * 1.30;
absquery2.FieldByName('OSEB').value :='1';
end else begin
absquery2.FieldByName('TTS').value := (absquery2.FieldByName('days').value) * (absquery2.FieldByName('tt').value * 2);
absquery2.FieldByName('OSEB').value :='2';
end;
absquery2.FieldByName('total').value := absquery2.FieldByName('days').value * absquery2.FieldByName('rate_price').value + absquery2.FieldByName('TTS').value;
absquery2.FieldByName('POND').value := absquery2.FieldByName('RATE_PRICE').value / absquery2.FieldByName('OSEB').value;
end;
.....

这一切似乎都在工作,除了页脚不接受网格总值的变化。在我看来,网格页脚只接受oncalculate fields事件,而不显示或隐藏字段。我如何才能做到这一点?

没有足够的信息。这是一张Db表。我认为您可以像.DataController.Summary.recreaculate(未经测试)一样重新计算页脚。这里一定还有其他内容。我只是尝试在一个不可见列中用一些随机数据填充一个
未绑定视图
,然后使其可见。摘要始终正确地重新计算和显示。我们需要一个能够帮助您的。是的,这是一个临时数据库表。还尝试了将
绑定视图
附加到
TFDMemTable
的方法。我仍然可以看到每次都正确更新的摘要。请创建SSCCE以再现ypur错误。我使用
devExpress 13.2.3
Delphi XE5
上进行了测试。字段“Total”(带页脚的字段)是一个简单的计算字段。所有计算都正确显示。但是,使用新值添加一个新字段需要进行一些额外的计算,从而导致“总计”字段更改。在网格中,这种新的变化是明显的,并且有效。但是,页脚不会更改旧值。在网格中,新的合计显示为ok,而应该反映更改的页脚则不会。我正在使用DelphiXe7和DE14.1.3。