2013-10-03 2 views
0

Вот определение моей сетки:jqGrid, gridReload не запускается

$grid = $("#schedule"); 

var last_selected_row; 
$grid.jqGrid({ 
    url:'xtras/schedule.php', 
    editurl:'xtras/schedule.php', 
    datatype: "json", 
    mtype:'GET', 
    colModel:[ 
     {name:'Date',index:'Street_Date', sorttype:"date", formatter:'date', formatoptions: {newformat:'d M y'}, 
     searchoptions: {sopt: ['eq','ne','lt','le','gt','ge'] , dataInit: function (elem) { $(elem).datepicker({ dateFormat: "yy-mm-dd'" }) } }, width:60}, 


     {name:'Master by',index:'master_by', width:60, sortable:false, 
      formatter: function(cellvalue, options, rowObject){ 
         if(cellvalue == '0000-00-00'){ 
          var rel_date = rowObject[0]; 
          var parse_d = $.datepicker.parseDate("yy-mm-dd", rel_date); 
          parse_d.setMonth(parse_d.getMonth()-2); 
          var new_d = $.datepicker.formatDate("d M y", parse_d); 
         } else { 
          var parse_d = $.datepicker.parseDate("yy-mm-dd", cellvalue); 
          var new_d = $.datepicker.formatDate("d M y", parse_d); 
         } 
         return new_d; 
        }, 
      formatoptions: {newformat:'d M y'}, 
      edittype: 'text', 
      editable:true , 
      editoptions: {size:9, 
       dataInit: function(el) { 
        setTimeout(function() { 
         $(el).datepicker({ 
          dateFormat: "d M y'" 
         }); 
        }, 200); 
       } 
      } 
     }, 

     {name:'MO',index:'MO', width:30, align:"center", sortable:false, formatter: "checkbox", editable:true, edittype:'checkbox', editoptions: { value:"Yes:No" }} 

    ], 
    height: "100%", 
    minWidth: 900, 
    rowNum:15, 
    rowList:[10,15,20,30,50,100], 
    viewrecords: true, 
    sortname:"ID", 
    sortorder: "desc", 
    pager: '#schedule_pager', 
    caption:"Release Schedule", 

    loadonce:false, 
    ajaxGridOptions: {cache: false}, 

    grouping:true, 
    groupingView : { 
     groupField : ['Date'], 
     groupColumnShow : [true], 
     groupOrder: ['desc'], 
     groupDataSorted : true 
    }, 

    gridview: true, 

    ondblClickRow: function (row_id) { 
     if(row_id != null) { 
      if(row_id !== last_selected_row) {jQuery('#schedule').jqGrid('restoreRow',last_selected_row); 
       jQuery('#schedule').jqGrid('saveRow',row_id); 
       jQuery("#schedule").jqGrid('editRow',row_id, true); 
       last_selected_row = row_id; 
      } else { 
       last_selected_row=row_id; 
      } 
     } 
    } 
}); 

и после этого:

$grid.jqGrid('bindKeys', { 
    onEnter: function(rowid) { 
     editingRowId = rowid; 

     $grid.jqGrid('editRow',rowid,true,null, {}, null, {},function(){ 
      setTimeout(function(){ 
       $grid.focus(); 
       $grid.trigger("reloadGrid"); 
      },100); 
     }); 
    } 
}); 

так $grid.trigger("reloadGrid"); никогда не срабатывает .... почему такое поведение? и как это исправить?

+0

Сфокусирован ли фокус()? Есть ли ошибки? Сбрасывается ли setTimeout? – adam

+0

@adam ничего не запускает .... – Elen

+0

может быть проблемой с bindKeys. Вероятно, JS-ошибка ранее, удерживая вас ... или функция onEnter не получает параметр, переданный. – adam

ответ

0

После посещения назад к этой проблеме я должен решить по-другому:

Вместо того, чтобы использовать «bindKeys», которые никогда не триггерами (в моем коде) я использовал функцию успеха в строке редактирования:

ondblClickRow: function (row_id) { 
     if(row_id != null) { 
      if(row_id !== last_selected_row) { 
       jQuery('#schedule').jqGrid('restoreRow',last_selected_row); 
       jQuery('#schedule').jqGrid('saveRow',row_id); 
       jQuery("#schedule").jqGrid('editRow',row_id, true, null, 
        function(){ $("#schedule").trigger("reloadGrid", [{current: true}]); }, 
        'xtras/schedule.php', 
        null,{},{},{} 
       ); 
       last_selected_row = row_id; 
      } else { 
       last_selected_row=row_id; 
      } 
     } 
    } 

Эта перезаряжаемая сетка прекрасно

Смежные вопросы