我的表单包含一个带有下拉值的字段(这些值来自choose函数),当我第二次尝试更新该字段(使用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);第一次它工作得很好,但是当我第二次选择一个不同的值时,我得到了一个错误,说这个值已经存在(就像它认为我正在尝试更新值,但我不是这样做的,我只是想获得当我将字段保留为优先级时,作为字段触发器的结果返回的其他字段的值)。我没有任何更改值的目的,只是从子窗体获取其他字段和数据的信息。
发布于 2018-08-27 16:23:05
我没有任何更改值的目的,只是从子窗体获取其他字段和数据的信息。
为了达到你的目的,你可以选择以下流程之一,这应该是可行的:
setSearchFilter()之后使用getRows(),以便检索您感兴趣的行,包括它的字段。然后很容易用它的索引setActiveRow()到startSubForm()。您始终可以使用clearRows()清除当前行并检索其他行。示例:
常量form =等待actions.priority.formStart(this.formName,this.onShowMessgeFunc,this.onUpdateFieldsFunc);常量过滤器={ QueryValues:{ field:'CUSTNAME',fromval: value,op:'=‘}}等待form.setSearchFilter(过滤器)常量行=等待form.getRows(1);console.log(“父窗体行”,行);等待form.setActiveRow(1);等待form.startSubForm(1);
getRows()的情况下对newRow()执行“更新”。然后使用saveRow()和startSubForm()来获取您需要的信息。对您尝试检索其数据的每个记录执行此操作。说明:当调用getRows()时,您会检索一些行。然后,您将无法使用检索到的行中已存在的值更新key字段,否则将出现错误。
https://stackoverflow.com/questions/52034074
复制相似问题