所以我有以下问题:我有一个带有一堆记录的 Foundset,我想(深度)将它们复制到一个新位置,包括所有值但没有 ID。最好的方法是什么?
问问题
36 次
1 回答
1
如果您想对 foundset 进行深层复制,您需要执行以下步骤:
- 创建一个空的foundset
retrieveOrCreateFoundset()
- 遍历foundset的所有记录,应该复制到一个新的
- 使用类似的东西获取 dataProviders
rec.dataprovider()
- 获取记录上每个数据提供者的值
rec.value()
- 确保 uuid 数据提供程序未复制到新记录
- 通过数据提供者将值设置为新记录
- 坚持更改
完整的代码示例是:
var vMobileController = plugins.iBizClientWebService.mobileController();
var vFoundset = vMobileController.currentFoundset();
var vDatabaseManager = vMobileController.dataManager();
var copyFoundSet = vDatabaseManager.retrieveOrCreateFoundset("<datasource>:<label>");
for (var index = 0; index < vFoundset.size(); index++) {
var rec = vFoundset.record(index);
var loc = copyFoundSet.newRecord();
var newRecord = copyFoundSet.record(loc);
var allDataproviders = rec.dataprovider();
for(var i=0;i<allDataproviders.length;i++)
{
var dataProvider = allDataproviders[i];
var dataValue = rec.value(dataProvider);
if(dataProvider != "attribute_id")
{
newRecord.setValue(dataProvider, dataValue);
}
}
}
copyFoundSet.saveData();
于 2013-04-16T15:20:27.233 回答