2

以下代码启动了一个表单和一个子表单,问题是我得到了父级的 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);
      })
    }

输出:

4

2 回答 2

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()或创建一个newRow()choose()

于 2018-08-23T07:39:57.080 回答
1

如果你想拉屏幕上的第一行不仅仅是autoRetrieveFirstRows在函数中使用参数formStart

链接到 Web SDK 站点上的函数

我个人将此值定义为默认值

于 2018-08-23T08:10:00.490 回答