下面的代码启动一个窗体和一个子窗体,问题是我得到了父窗体的subForm实例:
await actions.loginTest();
const form = await actions.priority.formStart(this.formName,
onShowMessgeFunc, onUpdateFieldsFunc);
console.log("form", form);
if(form.subForms["SHIPTO2"]) {
const subForm = await form.startSubForm("SHIPTO2");
console.log("subform", subForm);
subForm.choose("CUSTDES", '').then(options => {
let custOptions = options.SearchLine.map(x => {return
{label:x.retval + " - " + x.string1, value: x.retval }});
this.setState({
customersShippingOptions: custOptions,
})
}).catch((err) => {
console.log("CHOOSE ERROR", err);
})
}
输出:
答案 0 :(得分:2)
要启动子表单,父表单中必须有一个活动行,因此子表单将从该行开始。
在启动子窗体之前,应使用getRows()
函数检索行,然后调用setActiveRow(rowIndex)
来设置活动行。然后,您可以启动子窗体。
将代码修改为以下内容:
await actions.loginTest();
const form = await actions.priority.formStart(this.formName,
onShowMessgeFunc, onUpdateFieldsFunc);
console.log("form", form);
const rows = await form.getRows();
await setActiveRow(5);
if(form.subForms["SHIPTO2"]) {
const subForm = await form.startSubForm("SHIPTO2");
console.log("subform", subForm);
...
}
顺便说一句:我看到您正在使用choose()
,这里也需要有一个活动(子窗体)行,将getRows()
与setActiveRow()
一起使用或创建一个{{3 }},然后再致电choose()
答案 1 :(得分:1)
如果您想拉动屏幕上的第一行,而不仅仅是使用autoRetrieveFirstRows
参数
在函数formStart
Link to the function on the Web SDK site
我个人将此值定义为默认值