2013-06-27 2 views
0

Может ли кто-нибудь предложить мне, как я могу получить идентификатор родительской строки в пользовательской функции проверки подсегмента?jqGrid: получить идентификатор родительской строки в пользовательской функции проверки subgrid

Это является моим код

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 
        } 
       ); 
       } 

Теперь посмотрит на имени: '' песо, индекс: 'песо', .I использовали пользовательские функции customNumberChk.

Это моя пользовательская функция

function customNumberChk(value,colname) 
{ 

} 

Я хочу ROWID в этой функции.

+0

который какой субгрид вы используете? [Subgrid as Grid] (http://www.trirand.com/jqgridwiki/doku.php?id=wiki:subgrid_as_grid)? – Oleg

+0

Да, я использую Subgrid как Grid – Napster

+0

в случае, если у вас есть rowid как параметр обратного вызова 'subGridRowExpanded', и я не полностью понимаю ваш вопрос. Вероятно, проблема существует в том виде, в котором вы организовали свой код. Вы должны включить код, который вы используете в настоящее время. – Oleg

ответ

0

Важно то, что вы определяете функцию customNumberChk, используемую для пользовательской проверки. JavaScript позволяет получить доступ к любой переменной, определенной во внешней области. Одно имя имеет такие функции, как closure (см. the answer для получения дополнительной информации). Таким образом, можно, например, определить customNumberChk внутри subGridRowExpanded анонимной функции обратного вызова:

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 
        } 
       } 
      } 
     ... 
    }); 
    ... 
}