-1

I would like to know the simplest way to get what you see in a tcxgrid and at the click of a button, will then save the records into an xml file.

4

1 回答 1

2

使用 ExportGridToXML 过程的唯一小问题是它隐藏得相当好 - 您需要将 cxGridExportLink 单元添加到您的使用列表中。

uses
  cxGridExportLink;

procedure TForm1.SaveToXML1;
var
  FileName : String;
begin
  FileName := IncludeTrailingPathDelimiter(GetEnvironmentVariable('Temp'));
  FileName := FileName + 'Grid.XML';
  ExportGridToXML(FileName, cxGrid1);
end;

这会将 XML 文件保存到 \users[your name]\appdata\local\Temp。请注意,它将仅包括在网格中具有列的数据集字段,这可能是您想要的,也可能不是,具体取决于。

下面的过程显示了另一种将数据集保存到 XML 的方法,它绕过网格,并保存所有数据集字段的数据值,无论它们是否在 cxGrid 中有列。它的工作原理是通过 TDataSetProvider 将数据集的数据复制到临时 TClientDataSet,然后使用 TClientDataSet 的内置工具将其数据保存到 XML。它将尊重传递给它的数据集可能具有的任何过滤器。

procedure TForm1.SaveToXML2(DataSet : TDataSet);
var
  FileName : String;
  DSP : TDataSetProvider;
  CDS : TClientDataSet;
begin
  FileName := IncludeTrailingPathDelimiter(GetEnvironmentVariable('Temp'));
  FileName := FileName + 'Grid2.XML';

  DSP := TDataSetProvider.Create(Self);
  CDS := TClientDataSet.Create(Self);

  try
    DSP.DataSet := DataSet;
    DSP.Name := 'TempProvider';
    CDS.ProviderName := DSP.Name;
    DataSet.DisableControls;  // otherwise you will see the source dataset scrolling 
    // if it's shown in a grid
    CDS.Open;
    CDS.SaveToFile(FileName, dfXML);
  finally
    DataSet.EnableControls;
    CDS.Free;
    DSP.Free;
  end;
end;
于 2014-11-25T17:19:30.163 回答