向 JQgrid 上的 editurl 发送附加参数

Posted

技术标签:

【中文标题】向 JQgrid 上的 editurl 发送附加参数【英文标题】:Sending additional parameters to editurl on JQgrid 【发布时间】:2011-03-11 17:00:09 【问题描述】:

我现在的问题是在编辑该行时尝试发送该行的 ID (editable: false)。

例如,我有一个包含 userid(editable: false)、userid(editable: true)、firstname(editable: true)、lastname(editable: true) 列的网格。编辑行时,网格仅发送参数用户名、名字和姓氏。在服务器端,我需要用户 ID 来知道我已将这些新值应用到哪个用户。

editUrl 看起来像:

editurl : CONTEXT_PATH+'/ajax/admin/savePart.do?category=1',

谢谢

这是完整的代码:

$.jgrid.useJSON = true;
//http://www.trirand.com/jqgridwiki/doku.php?id=wiki%3Acommon_rules
$(document).ready(function() 
    //alert(CONTEXT_PATH);
    var lastsel;
    jQuery("#rowed3").jqGrid(
            
                url : CONTEXT_PATH+'/ajax/getPartesByCategory.do?catid=<s:property value="categoryId" />',
                //url : '/autoWEB/text.html',
                datatype: "json",
                ajaxGridOptions:  contentType: "application/json" ,
                jsonReader :  
                    root: "rows", 
                    page: "page", 
                    total: "total", 
                    records: "records", 
                    repeatitems: false 
                ,
                headertitles: true,
                colNames : [ 'ID', 'Pieza', 'Disponible'],
                colModel : [ 
                    name : 'piezaId',
                    index : 'piezaId',
                    align : "right",
                    width : 50, 
                    editable : false,
                    required : true
                , 
                    name : 'descripcion',
                    index : 'descripcion',
                    width : 390,
                    editable : true,
                    required : true
                , 
                    name : 'disponible',
                    index : 'disponible',
                    width : 80,
                    editable : true,
                    edittype : 'select',
                    editoptions:value:"0:No;1:Si",
                    required : true
                 ],
                rowNum : 20,
                rowList : [ 20, 40, 60, 80 ],
                pager : '#prowed3',
                sortname : 'piezaId',
                postData: piezaId : lastsel,
                mtype:"POST",
                viewrecords : true,
                sortorder : "desc",
                onSelectRow : function(id) 
                    if (id && id !== lastsel) 
                        jQuery('#rowed3').jqGrid('restoreRow', lastsel);
                        jQuery('#rowed3').jqGrid('editRow', id, true);
                        lastsel = id;
                    
                ,
                editurl : CONTEXT_PATH+'/ajax/admin/savePieza.do?categoria=<s:property value="categoryId" />',
                caption : "Piezas"
            );
    jQuery("#rowed3").jqGrid('navGrid', "#prowed3", 
        edit : false,
        add : false,
        del : false
    );
)

【问题讨论】:

【参考方案1】:

在您的 onSelectRow 回调中,您可以将 editUrl 修改为您想要的任何内容,包括传入您需要的 ID。

$("#rowed3").jqGrid('setGridParam', editurl:'whatever/url/you/need/with/the/id');

jqGrid 将为您添加所有其他必要的参数到该 editurl。

【讨论】:

【参考方案2】:

你可以使用

hidden: true, editable: true, editrules:  edithidden: false , hidedlg: true

piezaId (ID) 列的定义中。 hidedlg 参数目前不是真正需要的,但如果您决定使用其他 jqGrid 功能,它会很有用。

【讨论】:

如果 hidedlg 设置为 true,此列将不会出现在用户可以选择显示或隐藏哪些列的模式对话框中 (columnChooser)。有关详细信息,请参阅trirand.com/jqgridwiki/doku.php?id=wiki:show_hide_columns。【参考方案3】:

在 GET 字符串中传递值对我有用。

editurl: '/ajax/update?line=1',

【讨论】:

以上是关于向 JQgrid 上的 editurl 发送附加参数的主要内容,如果未能解决你的问题,请参考以下文章

jqgrid 设置行编辑为本地端编辑状态

jqgrid 设置隔行换色

jqgrid content-type datatype

如何将editbutton添加到jqgrid?

自定义jqGrid编辑功能,当行获取焦点时编辑,失去焦点时保存

如何访问发送给jqgrid的额外参数?