2013-06-27 21 views
0

任何人都可以建议我如何在子网格的自定义验证功能中获取父行ID?jqGrid:在子网格的自定义验证功能中获取父行号

这是我的代码

subGrid: true, 
       subGridRowExpanded: function (subgrid_id, row_id) 
       { 

        var subgrid_table_id; 
        subgrid_table_id = subgrid_id+"_t"; 
        var subgrid_pager_id = subgrid_id+"_p"; 
        jQuery("#"+subgrid_id).html("<table id="+subgrid_table_id+" class=scroll></table><div id="+subgrid_pager_id+" ></div>"); 
        jQuery("#"+subgrid_table_id).jqGrid(
        { 
         url:"form_subgrid_ajax_296.php?id="+row_id+"&child_form_id=296", 
         editurl:"../ajax/common_subgrid_edit_296.php?form_id="+sub_grid_id+"&parent_id="+row_id, 
         datatype: "json", 

         colNames: ['ID','PESO'], 
         colModel: [{name:'id',index:'id',editable:false,hidden:true}, 
          {name:'peso', 
        index:'peso', 
        formoptions:{elmsuffix:''},editrules:{required:true,custom:true, custom_func:customNumberChk},editable:true, 
           hidden:false, 
           search:true, 
           editoptions: {size:80, maxlength: 1000} 
           }], 
         sortorder: "asc", 
         height: 300, 
         loadonce: false, 
         width: 500, 
         rowNum:10, 
         rowList:[10,20,50], 
         sortname: 'id', 
         sortorder: "asc", 
         cellEdit: false, 
         cellsubmit: "clientarray", 
         caption:"Child", 
         pager: subgrid_pager_id 
        }); 
        jQuery("#"+subgrid_table_id).jqGrid 
        (
        "navGrid", 
        "#"+subgrid_pager_id, 
        { 
         edit:true, 
         add:true, 
         del:true, 
         search:false 
        }, 
        { 
         width:780, 
         recreateForm:true 
        }, 
        { 
         width:780, 
         recreateForm:true 
        } 
       ); 
       } 

现在看名称: '比索',指数: '比索',。我使用了自定义的功能customNumberChk。

这是我的自定义功能

function customNumberChk(value,colname) 
{ 

} 

我想在这个功能的rowid。

+0

这你使用的那种子网格? [Subgrid as Grid](http://www.trirand.com/jqgridwiki/doku.php?id=wiki:subgrid_as_grid)? – Oleg

+0

是的,我使用的次网格作为网格 – Napster

+0

的情况下,你有ROWID为'subGridRowExpanded'回调的参数,我不完全明白你的问题。问题可能存在于你组织代码的形式中。你应该包括你当前使用的代码。 – Oleg

回答

0

只有在您定义用于自定义验证的功能customNumberChk的地方才重要。 JavaScript允许访问外部范围中定义的任何变量。一个名字,例如closure(更多信息请参见the answer)。所以,你可以例如定义customNumberChksubGridRowExpanded匿名回调函数内:

subGridRowExpanded: function (subgrid_id, row_id) { 
    var subgrid_table_id; 
    function customNumberChk (value, colname) { 
     // one can use here ANY variable from the outer scope 
     // inclusive subgrid_id, row_id, subgrid_table_id and so on 
    } 
    ... 
    jQuery("#"+subgrid_table_id).jqGrid({ 
     ... 
     colModel: [... 
      {name:'peso', 
      ... 
      editrules:{required:true,custom:true, custom_func: customNumberChk} 
      } 
     ... 
    }); 
    ... 
} 

以同样的方式,你可以在任何没有定义customNumberChk功能和使用custom_func定义为匿名函数:

subGridRowExpanded: function (subgrid_id, row_id) { 
    var subgrid_table_id; 
    ... 
    jQuery("#"+subgrid_table_id).jqGrid({ 
     ... 
     colModel: [... 
      { 
       name:'peso', 
       ... 
       editrules: { 
        required: true, 
        custom: true, 
        custom_func: function (value, colname) { 
         // one can use here ANY variable from the outer scope 
         // inclusive subgrid_id, row_id, subgrid_table_id 
         // and so on 
        } 
       } 
      } 
     ... 
    }); 
    ... 
} 
相关问题