优先级的网络SDK:实施选择场(priority-web-sdk: Implementing a c

2019-09-27 16:31发布

我试图实现与一个选择场<select>控制。

<div id="container" onchange="fieldChangeHandler(event)">

...

<div class="item" >
    <label>Status</label>
    <select id="STATDES" onfocus="focusdiv(event)" onblur="defocusdiv(event)"></select>
</div>

updateFields()处理程序我识别控制类型:

function updateFields(result) {
    if (result[myForm.name]) {
        var fields = result[myForm.name][1];
        for (var fieldName in fields) {
            var el = document.getElementById(fieldName);
            if (el) {
                switch (el.nodeName){                       
                    case "INPUT":
                        el.value = fields[fieldName];
                        break;

                    case 'SELECT':                  
                        fill(el, fields[fieldName]);
                        el.value = fields[fieldName];
                        break;

                };
            };
        }
    }
}

...如果控制是<select>我填写的选项与窗体调用choose

function fill(el, sel){
    myForm.choose(el.id, "").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>');                  
                };
            };
        },

        function (serverResponse) {
            alert(serverResponse.message);

        }

    );
};

后续调用fieldChangeHandler<select> onchange事件调用fieldUpdate :加载的表格上的方法

        function fieldChangeHandler(event) {
            console.log("%s=%s", event.srcElement.id, event.target.value);
            myForm.fieldUpdate(event.srcElement.id, event.target.value);

        }

直到我试图保存当前表单记录这一切工作正常。

function saveHandler() {
    myForm.saveRow(
        0, 
        function(){
            console.log("Row Saved.");
        }, 
        function(serverResponse){
            console.log("%j", serverResponse);
        });
}

在那里我得到以下的输出:

Object {type: "error", ...}
code:"stop"
fatal:false
form:Object
message:"Status missing."
type:"error"
__proto__:Object

如何重写saveRow功能,使其检索的数据从<select>控制吗?

Answer 1:

您必须指定当前值choose参数。 我(MIS)阅读文档它不会从当前记录读取它..

Note: If the field currently cotains a value, it will automatically be 
filled in as fieldValue, even if a different fieldValue was specified.

因此, fill功能应该是这样的......

function fill(el, sel){
    myForm.choose(el.id, sel).then(

                ...

};


Answer 2:

我只是想指出的东西出来。 该选择方法: myform.choose是不是一个字段更新后,一定要调用。

据我所知,在乌拉圭回合的情况下,选择列表中得到不同的值,每个字段更新和u需要更新乌拉圭回合的选择。 这是很酷,但万一有人使用选择字段后不改变列表更新,最好是只有一次调用此方法!

只是写在这里,以澄清有关的东西choose方法:)



文章来源: priority-web-sdk: Implementing a choose-field