priority-web-sdk:实现搜索字段

时间:2017-06-24 10:25:42

标签: javascript erp

我正在扩展使用fill函数here以使用选择字段选项填充<select>元素,以便处理搜索字段。

我的表单中有两个<select>元素,STATDES(选择)和OWNERLOGIN(搜索)。

<div id="container" onchange="fieldChangeHandler(event)">
    ...
    <div class="item" >
        <label>Status</label>
        <select id="STATDES" onfocus="focusdiv(event)" onblur="defocusdiv(event)"></select>
    </div>
    <div class="item" >
        <label>Assigned to</label>
        <select id="OWNERLOGIN" onfocus="focusdiv(event)" onblur="defocusdiv(event)"></select>
    </div>

我正在检查zoom的{​​{1}}属性,以确定我是否应该从columnsearchObj.ChooseLine对象进行阅读。

searchObj.SearchLine

function fill(el, sel){ switch (myForm.columns[el.id].zoom){ case "Choose": myForm.choose(el.id, sel).then( function (searchObj) { var i, ch; $('#'+el.id).empty(); for (i in searchObj.ChooseLine) { ch = searchObj.ChooseLine[i]; if (ch.string1 == sel){ $("#"+el.id).append('<option selected value="'+ ch.string1 +'">'+ ch.string1 +'</option>'); } else { $('#'+el.id).append('<option value="'+ ch.string1 +'">'+ ch.string1 +'</option>'); }; }; }, showMessage ); break; case "Search": myForm.choose(el.id, sel).then( function (searchObj) { var i, ch; $('#'+el.id).empty(); for (i in searchObj.SearchLine) { ch = searchObj.SearchLine[i]; if (ch.string2 == sel){ $("#"+el.id).append('<option selected value="'+ ch.string2 +'">'+ ch.string2 +'</option>'); } else { $('#'+el.id).append('<option value="'+ ch.string2 +'">'+ ch.string2 +'</option>'); }; }; }, showMessage ); break; }; }; 上的choose函数会返回STATDES个对象。

searchObj.ChooseLine上的choose函数会返回OWNERLOGIN个对象。

的缩放类型均为searchObj.SearchLine

Choose

我如何区分?

2 个答案:

答案 0 :(得分:1)

您可以声明一个变量以包含搜索结果,并分配SearchLineChooseLine结果之一,具体取决于存在的结果。然后只需使用该变量。

 myForm.choose(el.id, sel).then(
   function (searchObj) {
     const searchResults = searchObj.SearchLine ? searchObj.SearchLine : searchObj.ChooseLine;
     var i, ch;
     $('#'+el.id).empty();
     for (i in searchResults) {
        ch = searchResults[i];
        ...
     }
   },showMessage);

如果您想知道该字段是否为搜索字段(并使用searchAction方法),您只需检查SearchLine结果中SearchObj的存在性。< / p>

const isSearchField = searchObj.SearchLine !== undefined 

答案 1 :(得分:0)

当有大量选择结果时,Web-SDK将返回一个Search对象,以便即使zoom=Choose也可以处理搜索。因此@naomi建议正确的方法来判断结果是选择还是搜索是检查结果对象是否包含SearchlineChooseline