php - 如何将自定义参数传递给 jqGrid 中内联编辑的 ajax 请求

标签 php javascript jqgrid

这是我的 jqGrid 处理程序。

var myEditParams = {
    keys: true,
    extraparam: {
        ajax: function () {
            alert("in myEditParams:extraparam");
            return "1";
        }
    }
};
var lastsel;
jQuery("#list2").jqGrid({
        data: data,
        height: 250,
        emptyDataText: "No Records Found",
        width: $('#mainwrapper').width(),
        datatype: "local",        
        colNames:['Table Description','Display Table name'],
        colModel:[
            { name:'table_desc', index:'table_desc', sortable: false, align: 'left', editable: true, edittype: 'text', editoptions:{ size:40 }, formatoptions:{
                keys: true,
                editOptions: myEditParams
            } },
            { name:'display_table_name',index:'display_table_name', sortable: false }
        ],
        loadComplete: function(){
            $('.ui-jqgrid-htable').css('width',$('#mainwrapper').width()+'px');
             if ($('#list2').getGridParam('records') == 0){ // are there any records?
                DisplayEmptyText(true);
             }else{
                DisplayEmptyText(false); 
             }                    
        },
        rowNum:10,
        rowList:[10,20,30],
        pager: '#pager2',
        sortname: 'id',
        viewrecords: true,
        sortorder: "desc",
        caption:"Changelog Tables",
        postData: { ajax: "1" },
        onSelectRow: function(id){
            if(id && id!==lastsel){
                jQuery('#list2').jqGrid('restoreRow',lastsel);
                jQuery('#list2').jqGrid('editRow',id,true);
                $('#list2').jqGrid('setGridParam',id,{ ajax:"1" }); //wanted to set some custom params here.
                lastsel=id;
            }
        },
        editurl: "changeLog.php"
    });

当我进行一些就地编辑操作时,我想发送一个额外的参数作为 ajax=1 。我已经尝试了各种方法。但似乎没有任何作用。我几乎感到沮丧。

我尝试过这个:

$("#list2").jqGrid('setGridParam',{postData:{ajax:'1'}});

没用。我还尝试设置 postData 参数,正如您在处理程序中看到的那样。那也行不通。这里出了什么问题?请帮我解决这个问题

最佳答案

方法editRow支持extraparam 。所以你可以重写onSelectRow所以:

onSelectRow: function (id) {
    var $myGrid = $(this); // it's better as jQuery('#list2')
    if (id && id !== lastsel) {
        $myGrid.jqGrid('restoreRow', lastsel);
        $myGrid.jqGrid('editRow', id, {
            keys: true,
            extraparam: { ajax: "1" }
        });
        lastsel = id;
    }
}

顺便说一句,您可以在 extraparam 中使用方法(函数)而不是属性。在以下情况下它可能会很有帮助。值如 extraparam: { ajax: $("#myControl").val() }将在调用时计算 editRow功能。如果您要使用 extraparam: { ajax: function () { return $("#myControl").val(); } }那么 ajax 的值参数将在保存值时进行评估。目前$("#myControl").val()可以有另一个值。

关于php - 如何将自定义参数传递给 jqGrid 中内联编辑的 ajax 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10074774/

相关文章:

php - 以 MySQL LIKE 操作符顺序返回结果

javascript - Angular 文本区域数据为 NaN

javascript - 如何从初始数组中删除与这些参数具有相同值的所有元素?

php - 使用 php 优化 SQL 查询

javascript - 在javascript中捕获php mysql变量

javascript - 伪造 Canvas ——这可行吗?

jquery - jqgrid 省略号

javascript - jqGrid 在输入附近添加标签

javascript - 如何在 jqGrid 中通过行 ID 获取页码

php - CURL函数在php中返回null