priority-web-sdk:startSubForm返回父表单

时间:2018-08-22 15:43:25

标签: subform priority-web-sdk

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

输出:

2 个答案:

答案 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

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