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

How does jqGrid dynamically populate the list of options based on status data?

我目前正在使用 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'时return"0:Unauthorized;1:Approval;2:Hold;3:Denial of approval"

approval_status的值为'1'时return"1:Approval;4:Reclamation"

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

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

我要改成如上。你如何解决这个问题?

指定从DB导入的数据变量同名,通过状态值注册条件语句,获取符合条件的DB数据。并绘制一个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
        }
        ...