AgilePoint的V8 Subform
1.新增V8特性(SetFieldValue)
可通过setFieldValue传入数组进行绑定Subform数据。
ExecuteLookup('lktest',function(sfdata){
//数据处理
SetFieldValue('SubForm1',sfdata) ;
})
function SetFieldValue(fieldId,data){
var options = {};
options.fieldId = fieldId;
options.value =data;
eFormHelper.setFieldValue(options, function (result)
{
if (result.isSuccess)
{
}
else
{
console.log(result.error);
}
});
}
2.V8 SubForm问题汇总
a.通过非AutoLookup绑定Subform数据问题
1.通过非AutoLookup(SetFieldValue或AddRowsToSubForm)绑定Subform的方法会出现在GetSubFormData时获取数据不全的情况
解决方法:
在SetFieldValue或AddRowsToSubForm前将缺少的字段补上数据源中且赋为空值。
(以下以TextBox6为例)
ExecuteLookup('lktest',function(sfdata){
//数据处理
$(sfdata).each(function(i,data){data.TextBox6='';})
AddRowsToSubForm('SubForm1',sfdata);
})
b.DropDownList在Subform中加载问题
1.通过bindDataToCollectionControls方法绑定Subform下拉框时,会发生下拉框没有加载数据源
问题原因:
由于Subform绑定数据和下拉框绑定数据是异步进行的,当Subform数据未加载完成之前,进行绑定下拉框会导致一部分数据源绑定下拉框失败。
解决方法:
1.将下拉框绑定方式改为DropdownList绑定lookup的方式
2.在AddRowsToSubForm的Success之后进行绑定下拉框数据源操作(SetFieldValue在数据量多的时候不支持)
function AddRowsToSubForm(fieldId,data){
var options = {};
options.fieldId = fieldId;
if(data!=undefined){
options.value = data;
}
eFormHelper.addRowsToSubForm(options, function (result)
{
if (result.isSuccess)
{ //在此进行绑定下拉框数据源操作
ExecuteLookup('lkLoadDrpMult',function(res){
BindDataToCollectionControls('SubForm1/DropdownList1: [*]',res)
})
}
else
{
console.log(result.error);
}
});
}