所以我有以下问题: 我有一个包含大量记录的 Foundset,我想将它们(深度)复制到新位置,包括所有值但没有 ID。最好的方法是什么?
最佳答案
如果您想对搜索结果进行深层复制,则需要执行以下步骤:
- 通过
retrieveOrCreateFoundset()
创建一个空的搜索结果 - 迭代搜索结果的所有记录,并将其复制到新记录
- 使用诸如
rec.dataprovider()
之类的方法获取 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();
关于javascript - 如何复制搜索结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16039516/