使用 jqGrid 'actions' 预定义格式化程序时如何传递额外参数?

Posted

技术标签:

【中文标题】使用 jqGrid \'actions\' 预定义格式化程序时如何传递额外参数?【英文标题】:How to pass extra parameters while using jqGrid 'actions' predefined formatter?使用 jqGrid 'actions' 预定义格式化程序时如何传递额外参数? 【发布时间】:2012-06-23 08:09:40 【问题描述】:

我正在使用 jqGrid v3.8.1 并且无法通过预定义的格式化程序“操作”传递额外的参数。基本上我想在编辑和删除时传递两个参数以及编辑的字段。根据文档,extraparam 可用于将附加参数发布到服务器。我已经尽我所能尝试并尽可能多地进行研究,但是我仍然无法让它发挥作用。我参考了以下内容:

Link 1Link 2

还有其他在 *** 和其他地方。我不确定出了什么问题。

以下是我的代码。请帮帮我。

jQuery("#configGrid").jqGrid(
    mtype: "post",
    url: '/Controller/Action',
    datatype: "json",
    colNames: ['Location', 'S_No', 'S_C', 'D_No', 'D_C', 'B_No', 'B_C', 'G_No', 'GP_P', 'IP', 'OA', 'NA', 'Months', 'Edit'],
    colModel: [
        name: 'name',
        index: 'name',
        width: 90
    , 
        name: 's_no',
        index: 's_no',
        width: 90,
        align: "center",
        editable: false
    , 
        name: 's_c',
        index: 's_c',
        width: 90,
        align: "center",
        editable: true
    , 
        name: 'd_no',
        index: 'd_no',
        width: 90,
        align: "center",
        editable: false
    , 
        name: 'd_c',
        index: 'd_c',
        width: 90,
        align: "center",
        editable: true
    , 
        name: 'b_no',
        index: 'b_no',
        width: 90,
        align: "center",
        editable: false
    , 
        name: 'b_c',
        index: 'b_c',
        width: 90,
        align: "center",
        editable: true
    , 
        name: 'g_no',
        index: 'g_no',
        width: 100,
        align: "center",
        editable: false
    , 
        name: 'g_c',
        index: 'g_c',
        width: 100,
        align: "center",
        editable: true
    , 
        name: 'TIP',
        index: 'TIP',
        width: 80,
        align: "right",
        editable: true
    , 
        name: 'OA',
        index: 'OA',
        width: 80,
        align: "center",
        editable: true
    , 
        name: 'NA',
        index: 'NA',
        width: 80,
        align: "center",
        editable: true
    , 
        name: 'Months',
        index: 'Months',
        width: 150,
        align: "center",
        sortable: false,
        editable: true
    , 
        name: 'myac',
        width: 50,
        align: "center",
        fixed: true,
        sortable: false,
        resize: false,
        formatter: 'actions',
        formatoptions: 
            keys: true,
            extraparam: 
                slot: "1",
                installment: "1"
            
        
    ],
    rowNum: 10,
    rownumbers: true,
    autowidth: true,
    rowList: [10, 20, 30],
    postData: 
        level: function () 
            if (p_level == undefined || p_level == null) 
                return 'S';
             else 
                return p_level;
            
        ,
        location: function () 
            return p_location;
        ,
        ownLower: function () 
            return flagOwnLower;
        ,
        slot: function () 
            return $("#ddlSlot").val();
        ,
        installment: function () 
            return $("#ddlInstallment").val();
        
    ,
    loadError: function (xhr, status, error) 
        $('#ErrorMessage').html(xhr.responseText);
        $('#ui-widget').show();
        $("#ErrorMessage").stop().show('slow');
    ,
    //loadonce: true,
    pager: '#configPager',
    sortname: 'invdate',
    viewrecords: true,
    sortorder: "desc",
    //jsonReader:  repeatitems: false ,
    caption: "caption",
    height: '100%',
    editurl: '/Controller/UpdateAction/' + Math.random(),
    multiselect: true,
    loadComplete: function () 
        $('#ErrorMessage').html("");
        $('#ui-widget').hide();
        $("#ErrorMessage").stop().hide('slow');

        gridLoaded = true;
    ,
    onSelectRow: function (rowId) 

        //tried this but it is not working
        //jQuery("#frmac").editRow(rowId, true, null, null, '/Action/Controller/' + Math.random(),  slot: $("#ddlSlot").val(), installment: $("#ddlInstallment").val() );
    
);

【问题讨论】:

【参考方案1】:

change log 提到在 v3.8.2 中引入了预定义的格式化程序“操作”。即使我使用的是 v3.8.1,它也允许我使用“操作”格式化程序以及它的一些属性,如键、编辑按钮和删除按钮(我没有尝试其他的),但是不支持 extraparam、onEdit、onSearch。我升级到 v3.8.2 并解决了我的问题。

【讨论】:

以上是关于使用 jqGrid 'actions' 预定义格式化程序时如何传递额外参数?的主要内容,如果未能解决你的问题,请参考以下文章

jqGrid 字符串自定义格式,如日期格式

Web jquery表格组件 JQGrid 的使用 - 5.Pager翻页搜索格式化自定义按钮

jqGrid细节备注—jqGrid中自定义格式,URL格式

jqGrid字符串自定义格式,如日期格式

使用自定义日期格式后,jQGrid DateFilter无法正常工作

asp.net mvc中html.Action问题