jqGrid:使用dataUrl发送param

时间:2012-09-27 05:30:24

标签: ruby-on-rails jqgrid

我正在尝试创建一个从属下拉框。 'element'依赖于'分组'。

我的ajaxSelectOptions函数似乎有效,因为'temp'被传递,但是'populate_element'没有使用它。如何使用'temp'作为我的参数:id?

我的网格:

jQuery(document).ready(function(){
var lastsel;
var grid = jQuery("#list").jqGrid({

url:'codes/get_data.xml',
datatype: 'xml',
mtype: 'GET',
colNames:['ID', 'Version', 'Grouping', 'Element', 'Name'],
colModel:[
    {name: 'id', index: 'id', hidden: true, editable: false },
    {name: 'version', index: 'version',editable: true, editrules:{number:true}, cellEdit: true, search:true },
    {name: 'grouping', index: 'grouping', editable: true, edittype: 'select', editoptions: {dataUrl: 'codes/populate_grouping.html'} },
    {name: 'element', index: 'element', editable: true, edittype: 'select' }
],
pager: '#pager',
rowNum:200,
rowList:[50,100,200],
sortname: 'id',
sortorder: 'asc',
viewrecords: true, 
height: 500,
scrollrows: true,
rownumbers: false,
caption: 'GL Codes',
editurl: 'codes/post_data.xml',

onSelectRow: function(id){
    $("#list").setColProp('element', {editoptions: { dataUrl: 'codes/populate_element.html' }});

    if(id && id!==lastsel){
        $('#list').restoreRow(lastsel);         
       lastsel=id;
    }
    $('#list').editRow(id,true);        
},
ajaxSelectOptions: {
      data: {
        temp: function(temp){
          return grid.jqGrid('getGridParam', 'selrow')
        } 
      }
    }

});

这是我的错误消息:

Started GET "/codes/populate_element.html?temp=4" for 127.0.0.1 at 2012-09-27 17:18:33 +1200
Processing by CodesController#populate_element as HTML
  Parameters: {"temp"=>"4"}
Completed 500 Internal Server Error in 1ms

ActiveRecord::RecordNotFound (Couldn't find Code without an ID):
app/controllers/codes_controller.rb:73:in `populate_element' 

更新 我确定调用param实际上只是一个ruby语法错误,而不是jqGrid问题。作为参考,我最终称之为...... @code = Code.where([“id =?”,params [:temp]])。first

1 个答案:

答案 0 :(得分:0)

我认为问题是您对网格行使用了错误的ID。在填充网格期间存在错误。解决问题的最简单方法是将key: true属性添加到'id'colModel列的定义中。如果列id中的值将用作rowid:网格的行id的{​​{1}}属性值。