2011-11-16 21 views
0

我需要有当前选择的行ID才能构建一个JSON字符串,该字符串将被传递给一个php脚本以创建一个select,所以我附上了脚本引用和代码在一个函数中。jqgrid dataUrl函数代码段遇到问题

但是,这样做会造成NetworkError: 403 Forbidden错误。

这里是代码段:

editoptions:{dataUrl:function(){ 
var row_id = $('#tab3-grid').getGridParam('selrow'); 
var jsondata = JSON.stringify({"cu.STID": $('#tab3-grid').jqGrid('getCell', row_id, 'cu.STID'), 
           "wv.SVID": $('#tab3-grid').jqGrid('getCell', row_id, 'wv.SVID')}); 

return 'php/items-se-script.php?data='+jsondata; 
}, 

有谁知道怎么回事?

UPDATE:

{name:'it.PRID', index:'it.PRID', hidden: true, editable:true, edittype:'select', 
editoptions:{dataUrl:'php/items-se-script.php', defaultValue:'26', dataEvents:[{type:'change',fn:function(e){$('input#ip\\.Item').val($('option:selected', this).text());}}]}, 
formoptions:{label:'Item', elmprefix:'* '}, 
editrules:{edithidden:true, required:true}}, 

{name:'ip.Item', index:'ip.Item', hidden: true, sortable: true, editable:false, edittype:'text', editoptions:{readonly:true,size:20}, formoptions:{rowpos: 50, label:'Item'}, editrules:{required:true}} 

], 

ajaxSelectOptions: { 
    type:'POST', 
    data: { 
     data: function() { 
     var row_id = $('#tab3-grid').getGridParam('selrow'); 
     return JSON.stringify({ 
      "cu.STID": $('#tab3-grid').jqGrid('getCell', row_id, 'cu.STID'), 
      "wv.SVID": $('#tab3-grid').jqGrid('getCell', row_id, 'wv.SVID') 
     }); 
     } 
    } 
}, 

url: 'php/workordertab-script.php', 
editurl:'php/workordertab-script.php', 

回答

1

属性dataUrl不能是一个函数。如果您在构建选择期间需要向服务器发送任何附加信息,则可以使用ajaxSelectOptions选项,如我所描述的here。在你的情况下,它将大约如下:

var $myGrid = $('#tab3-grid'); 
$myGrid.jqGrid({ 
    // ... here all you current parameters which includes 
    //  editoptions: { dataUrl: 'php/items-se-script.php' } 
    // for the corresponding column in colModel 
    ajaxSelectOptions: { 
     data: { // "data" here is jQuery.ajax parameter 
      data: function() { // "data" here is the name of you custom parameter 
       var row_id = $myGrid.getGridParam('selrow'); 
       return JSON.stringify({ 
        "cu.STID": $myGrid.jqGrid('getCell', row_id, 'cu.STID'), 
        "wv.SVID": $myGrid.jqGrid('getCell', row_id, 'wv.SVID') 
       }); 
      } 
     } 
    } 
}); 
+0

@OIg,它的工作 - 谢谢!我意识到ajaxSelectOptions选项会触发网格中所有选定的dataUrl。有没有办法让ajaxSelectOptions只针对网格中的一个特定select dataUrl触发? –

+0

@NelsonM:不,你不能制作个人'ajaxSelectOptions'(见[这里](https://github.com/tonytomov/jqGrid/blob/v4.2.0/js/grid.common.js#L345)和[这里](https://github.com/tonytomov/jqGrid/blob/v4.2.0/js/grid.inlinedit.js#L60)或[这里](https://github.com/tonytomov/jqGrid/blob/ v4.2.0/js/grid.formedit.js#L425)。你可以为不同的网格列设置不同的URL,但可以使用一个通用的'ajaxSelectOptions'选项 – Oleg

+0

@OIeg,为了在这种情况下创建正确的选择列表,必须知道表单是否为“添加”或“编辑”除了定义editData:在navgrid中进行编辑和添加,是否有一个jqgrid全局变量来标识添加或编辑导航按钮是否被按下? –