我的表单包含一个带有下拉值的字段(这些值来自select函数),当我第二次尝试更新该字段(使用fieldUpdate)时,总是收到以下错误:屏幕中已经存在相同的值”,为了实现正确的行为,需要执行的正确操作顺序是什么? 这是我尝试实现的目标:
await actions.loginTest();
const form = await actions.priority.formStart(this.formName,
this.onShowMessgeFunc, this.onUpdateFieldsFunc);
_formInstance = form;
const rows = await form.getRows(1);
console.log("parent form rows", rows);
await _formInstance.setActiveRow(1);
form.choose("CUSTNAME", '').then(options => {
let custOptions = options.SearchLine.map(x => {return {label:x.retval + " -
" + x.string1, value: x.retval }});
}).catch((err) => {
console.log("CHOOSE ERROR", err);
})
当我从下拉列表中选择一个值时,这些是我的操作:
await _formInstance.fieldUpdate("CUSTNAME", data.value);
await _formInstance.saveRow(1);
const rows = await _formInstance.getRows(1);
console.log("rows", rows);
第一次可以很好地工作,但是当我第二次选择一个不同的值时,我得到一个错误,指出该值已经存在(好像它认为我正在尝试更新该值,但是我不这样做) t,我只想获取当我将该字段留在“优先级”时由于该字段触发而返回的其他字段的值。我没有任何目的来更改值,只是从子表单中获取其他字段的信息和数据。
答案 0 :(得分:1)
我没有任何目的来更改值,只是从子表单中获取其他字段的信息和数据。
为了实现您的目的,您可以选择以下一种有效的流程:
推荐:在拥有setSearchFilter()
后使用getRows()
,以便检索您希望包括其字段的行。然后轻松地将setActiveRow()
的索引指向startSubForm()
。您可以始终使用clearRows()
清除当前行并检索其他行。
示例:
const form = await actions.priority.formStart(this.formName,
this.onShowMessgeFunc, this.onUpdateFieldsFunc);
const filter = {
QueryValues:
[{
field: 'CUSTNAME',
fromval: value,
op: '='
}]
}
await form.setSearchFilter(filter)
const rows = await form.getRows(1);
console.log("parent form rows", rows);
await form.setActiveRow(1);
await form.startSubForm(1);
在newRow()
上执行“更新”而不调用getRows()
。然后saveRow()
和startSubForm()
获得所需的信息。对您尝试检索其数据的每条记录执行此操作。
说明:调用getRows()
时,您会检索到一些行。然后,您无法使用检索到的行中已经存在的值更新key
字段,否则会收到该错误。