jqGrid如何根据状态数据动态填充选项列表?

时间:2019-07-16 08:18:09

标签: javascript java mysql web jqgrid

我当前正在使用jQgrid绘制列表,并且正在通过Ajax检索数据。我可以正常返回列表,并且没有任何问题。

我的问题是我必须根据获得的状态值动态填充选项列表

呼叫数据的地方:

$(function(){

    search_provider();


    // grid resize
    $(window).on('resize.jqGrid', function() {
        $("#requestList").jqGrid('setGridWidth', $(".grid-cover").width());
    })


});

function search_provider() {


    var queryData = $("#searchList").serialize();

    $.ajax({
        url : "/v1/point/admin/provider/game_provider_list",
        type : "GET",
        dataType : "json",
        data: queryData,
        success : function(result) {
            $("#resultLength").text(result.jqgrid_data.length);
            if(result.jqgrid_data.length == 0){
                noData();
            }else{
            $('#grid-cover').show();
            $('#no-data').hide();
            setRequestList(result.jqgrid_data)
            }
        }
    })  
}

动态填充的地方:

{
            name : 'approval_status',
            index : 'approval_status',
            align : 'center',
            editable : true,
            edittype : 'select',
            formatter : 'select',
            editoptions : {
                value : "0:Unauthorized;1:Approval;2:Hold;3:Denial of approval;4:Reclamation",
                dataEvents : [{
                    type : 'change',
                    fn : function(e) {
                        ...
                    }
                }]
            }
        }
  

它现在显示所有列表。

approval_status的值为'0'时,返回"0:Unauthorized;1:Approval;2:Hold;3:Denial of approval"

approval_status的值为'1'时,返回"1:Approval;4:Reclamation"

approval_status的值为'2'时,返回"1:Approval;2:Hold;3:Denial of approval"

approval_status的值为'3'时,返回"1:Approval;2:Hold;3:Denial of approval"

我想像上面一样被改变。您如何解决这个问题?

预先感谢

1 个答案:

答案 0 :(得分:0)

指定从数据库导入的数据变量的相同名称,并通过状态值注册条件语句以获得与条件匹配的数据库数据。并绘制 JQgrid 以适合数据。

MyBatis.xml

select id="list" parameterType="hashmap" resultType="hashmap">
            <choose>
                <when test='approval_status == "0"'>
                                            SELECT
        seq_no AS col1, 
        nick_name AS col2,
        ...
        FROM DB_DB
                <when test='approval_status == "1"'>
                                                                SELECT
         seq_no AS col1, 
         ............
         </choose>

JQgrid.js

function setRequestList(jqgrid_data,status){
    var title = [];
    if(status == '0'){
        title = ['No', 'nick',... ];
    }else if(status == '1'){
        title = ['No', 'name', ... ];
    }
    var colmodel = [];
    $("#requestList").jqGrid("GridUnload");
    jQuery("#requestList").jqGrid({
        data : jqgrid_data,
        datatype : "local",
        height : 'auto',
        colNames : title,
        colModel : [{
            name : 'col1',
            index : 'seq',
            align : 'center',
            sortable : false
        }
        ...