簡體   English   中英

jqGrid下拉列表在編輯表單上的值錯誤

[英]jqGrid dropdown has wrong value on edit form

打開表單時,我的編輯表單上的三個下拉菜單之一未正確設置。 表格上的其他兩個下拉菜單均已正確設置。 從服務器以<select><option value='#'>blah</option></select>.的形式返回下拉數據<select><option value='#'>blah</option></select>.

classDesc,purchClass和company是在編輯表單上使用下拉菜單的三個字段。 所有這些都正確顯示在網格上,但是在編輯表單公司上始終顯示第一個選項。 從服務器返回的下拉數據中存在網格列中顯示的值,但未選擇該值。 (請參見屏幕截圖)我嘗試在afterShowForm中強制使用該值,但這沒有效果。 jqGrid 4.6.0

這是我的專欄模型:

colModel : [ 
    { name:'id', index:'id', width:50, sortable:true, hidden: false, editable: true, align: 'right', editrules: {edithidden: false}, searchoptions: { sopt: ['eq','bw', 'cn']}, editrules: {required:true}},
    { name:'submittable', index:'submittable', width:42,sortable:false, align: 'center', search: false, cellattr: function () { return ' title="Submit this order"'; }},
    { name:'statusId', index:'statusId', width:50, sortable:false, hidden: true, editable: true, editrules: {edithidden: false}},
    { name:'statusClassId', index:'statusClassId', width:50, sortable:false, hidden: true, editable: true, editrules: {edithidden: false}},
    { name:'status', index:'status', width:100, sortable:true, hidden: false, editable:true, editoptions:{readonly:"true", defaultValue:"Open"}, searchoptions: { sopt: ['eq','bw', 'cn']}, editrules: {required:true}},
    { name:'dlcd', index:'dlcd', width:50, sortable:true, hidden: false, editable:true, editoptions:{readonly: true, defaultValue:"<%=userDatabean.getNumber()%>"}, searchoptions: { sopt: ['eq','bw', 'cn']}, editrules: {required:true}},
    { name:'classId', index:'classId', width:10, sortable:false, hidden: true, editable: true, editrules: {edithidden: false}},
    { name:'classDesc', index:'classDesc', width:75, sortable:true, editable:true, edittype:'select', editoptions: {dataUrl:'/rebate/rest/lookup/v1/getClass'}, searchoptions: { sopt: ['eq','bw', 'cn']}, editrules: {required:true}},
    { name:'purchClassId', index:'purchClassId', width:10, sortable:false, hidden: true, editable: true, editrules: {edithidden: false}},
    { name:'purchClass', index:'purchClass', width:70, sortable:true, editable:true, edittype:'select', editoptions: { dataUrl:'/rebate/rest/lookup/v1/getPurch'}, searchoptions: { sopt: ['eq','bw', 'cn']}, editrules: {required:true}},
    { name:'purchOther', index:'purchOther', width:150, sortable:false, hidden: true, editable:true, editrules: {edithidden: true}},
    { name:'custId', index:'custId', width:30, sortable:false, hidden: false, editable: true, editrules: {edithidden: false}},
    { name:'company', index:'company', width:175, sortable:true, editable:true, edittype:'select', editoptions: {dataUrl:'/rebate/rest/lookup/v1/getCustomer'}, searchoptions: { sopt: ['eq','bw', 'cn']}, editrules: {required:true}},
    { name:'poNum', index:'poNum', width:15, sortable:false, hidden: true, editable:true, editrules: {edithidden: true}},
    { name:'deliveryDate', index:'deliveryDate', width:80, sortable:true, hidden: false, editable:true, sorttype: "integer", 
        formatter: function (cellValue, options, rowdata, action) {
            var date = new Date(cellValue);
            var year = date.getFullYear();
            var month = date.getMonth() < 9
                        ? "0" + (date.getMonth()+1)
                        : (date.getMonth()+1);
            var day = date.getDate() <=9
                        ? "0" + date.getDate()
                        : date.getDate();
            return [year,month,day].join("-");
         },
        searchoptions: { sopt: ['eq','bw', 'cn']}, editrules: {required:true},
        editoptions: {  maxlength: 12, dataInit: function(element){ $(element).datepicker({ dateFormat: "yy-mm-dd" }) } }, 
        editrules: { date: true, required: false }, editrules: {required:true}},
    { name:'dlrInfo', index:'dlrInfo', width:15, sortable:false, hidden: true, editable:true, editrules: {edithidden: true}, editoptions:{size:50, maxlength: 100}},
    { name:'file1', index: 'file1', width:50, sortable:false, hidden: true, editable: true, editrules: {edithidden: true}},
    { name:'file2', index: 'file2', width:50, sortable:false, hidden: true, editable: true, editrules: {edithidden: true}},
    { name:'terms', index:'terms', width:50, sortable:false, hidden: true, editable: true, edittype:'checkbox', editoptions: {value:"true:false"}, editrules: {edithidden: true},
        formoptions:{label: '<a href="javascript:showTerms()">Terms</a>'}       
    },
],

帶有編輯參數的navGrid:

    $("#orderGrid").jqGrid('navGrid', '#orderGridPager', {
    edit : true, 
    add : true, 
    del : false, 
    search : true

},{ //Edit form
    url : '/rebate/rest/header/v1/update',
    width: 600,
    viewPagerButtons: false,
    closeAfterEdit: true,
    recreateForm: true,
    modal: true,

    beforeShowForm: function ($form) {
        if($('#file1').val()=='') { //no file so add the file inputs
            $('#tr_file1').html('<td class="CaptionTD">Receipt 1</td><td class="DataTD">&nbsp;<input type="file" enctype="multipart/form-data" id="file1" name="file1" class="FormElement"></td>');
            $('#tr_file2').html('<td class="CaptionTD">Receipt 2</td><td class="DataTD">&nbsp;<input type="file" enctype="multipart/form-data" id="file2" name="file2" class="FormElement"></td>');

        } else { //we have a file so just show the file name
            $('#tr_file1').html('<td class="CaptionTD">Receipt 1</td><td class="CaptionTD">&nbsp;' + $('#file1').val() +'</td>');
            $('#tr_file2').html('<td class="CaptionTD">Receipt 2</td><td class="CaptionTD">&nbsp;' + $('#file2').val() +'</td>');
        }

        $form.find("#status,#dlcd,#id")
            .prop("readonly", true)
            .addClass("ui-state-disabled");

        if(!security[userLevel][$("#statusClassId").val()-1]) { 
            //make all fields read only.
            $form.find("input,select,button")
            .prop("disabled", true)
            .addClass("ui-state-disabled")
            .closest(".DataTD")
            .prev(".CaptionTD")
            .prop("disabled", true); 

            $form.parent().find('#sData').hide();   
        }
    },
    afterShowForm: function(formId) {
        $("#company").val($("#custId").val()).prop("select",true);

        console.log("after custId: " + $("#custId").val());
    },
    beforeSubmit: function(postdata, formid) {
        var chk = checkBeforeSubmit();
        if(!chk[0]) return chk;

        return [true, null, null];
    },
    serializeEditData: function (postdata) {
        return getFieldData("FrmGrid_orderGrid");
    },
    afterSubmit: function(response, postdata) {
        sendFormFiles(response.responseText);
        //console.log(response);
        $('#grid').trigger( 'reloadGrid' );
        return [true,null,null];
    },
    errorTextFormat: function(response) {
        return response.responseText=="" ?"400.1: An unknown error occured." : response.responseText;
    }

}

在此處輸入圖片說明

原來這是一個數據問題。

用於填充網格的查詢僅拉入公司名稱,用於構建下拉列表的查詢的查詢將其他幾個字段串聯到顯示值中。 我假設jqgrid將使用custId值在下拉列表中選擇合適的元素,但它使用的是顯示值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM