priority-web-sdk:实现搜索字段
priority-web-sdk: Implementing search fields
我正在扩展用于 的 fill
函数,以使用选择字段选项填充 <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>
我正在检查 column
的 zoom
属性 以确定我是否应该从 searchObj.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
returns 一个 searchObj.ChooseLine
对象上的函数。
choose
OWNERLOGIN
returns 一个 searchObj.SearchLine
对象上的函数。
BUT 两者的缩放类型都是 Choose
。
myForm.columns['STATDES']{
attachment: 0
decimal: 0
field: 5
format: ""
mandatory: 1
maxLength: 12
readonly: 0
title: "Status"
type: "text"
zoom: "Choose"
}
myForm.columns['OWNERLOGIN']{
"attachment": 0,
"decimal": 0,
"field": 6,
"format": "",
"mandatory": 1,
"maxLength": 20,
"readonly": 0,
"title": "Assigned to",
"type": "text",
"zoom": "Choose"
}
请问如何区分?
您可以声明一个变量来包含搜索结果,并分配 SearchLine
或 ChooseLine
结果之一,具体取决于存在的结果。然后简单地使用那个变量。
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 方法),您只需检查 SearchObj
结果中是否存在 SearchLine
.
const isSearchField = searchObj.SearchLine !== undefined
当有很多选择结果时,Web-SDK 会return一个Search 对象,以便即使zoom=Choose
也可以处理搜索。因此,@naomi 建议决定结果是 Choose 还是 Search 的正确方法是检查结果对象是否包含 Searchline
或 Chooseline
.
我正在扩展用于 fill
函数,以使用选择字段选项填充 <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>
我正在检查 column
的 zoom
属性 以确定我是否应该从 searchObj.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
returns 一个 searchObj.ChooseLine
对象上的函数。
choose
OWNERLOGIN
returns 一个 searchObj.SearchLine
对象上的函数。
BUT 两者的缩放类型都是 Choose
。
myForm.columns['STATDES']{
attachment: 0
decimal: 0
field: 5
format: ""
mandatory: 1
maxLength: 12
readonly: 0
title: "Status"
type: "text"
zoom: "Choose"
}
myForm.columns['OWNERLOGIN']{
"attachment": 0,
"decimal": 0,
"field": 6,
"format": "",
"mandatory": 1,
"maxLength": 20,
"readonly": 0,
"title": "Assigned to",
"type": "text",
"zoom": "Choose"
}
请问如何区分?
您可以声明一个变量来包含搜索结果,并分配 SearchLine
或 ChooseLine
结果之一,具体取决于存在的结果。然后简单地使用那个变量。
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 方法),您只需检查 SearchObj
结果中是否存在 SearchLine
.
const isSearchField = searchObj.SearchLine !== undefined
当有很多选择结果时,Web-SDK 会return一个Search 对象,以便即使zoom=Choose
也可以处理搜索。因此,@naomi 建议决定结果是 Choose 还是 Search 的正确方法是检查结果对象是否包含 Searchline
或 Chooseline
.