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.
问问题
964 次
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 回答