2013-04-06 6 views
0

Я успешно загрузил данные в свою сетку. Я включил редактирование ячеек и нажав на ячейку, он будет находиться в режиме редактирования, и несколько ячеек могут быть отредактированы. Отредактированные данные будут сохранены позже, нажав кнопку пользовательского обновления. При нажатии другой пользовательской кнопки в сетку будет добавлена ​​новая строка, которая также будет сохранена при нажатии кнопки обновления, упомянутой ранее.Перезагрузка данных в JQgrid при нажатии кнопки не работает

Теперь проблема заключается в том, что я пытаюсь сбросить отредактированные значения (т. Е. Отредактированные значения ячеек и новую строку, добавленную перед сохранением) с использованием функции «перезагрузки» в сетке ничего не происходит. Она остается такой же, как и отредактированная значения и пустая новая строка ...

Мой код здесь

$scope.init = function() { 
     var grid = $("#list"); 
     var lastSel, dataSel, dataLen; 
     var colD, colM, colN, userdata; 
     jQuery.ajax({ 
     async: false, 
      type: "GET", 
      url:"getData.htm", 
      data: "", 
      dataType: "json",   
      success: function(result){ 
       colD = result.colData, 
       colM = result.colModel, 
       colN = result.colNames, 
       userdata = colD.userdata; 
       jQuery("#list").jqGrid({ 
        datatype: 'local', 
        data: colD.rootVar, 
        colModel:colM, 

        sortorder: 'asc', 
        viewrecords: true, 
        resizable: true, 
        gridview: true,     
        altRows: true,         
        cellEdit:true, 
        footerrow: true,      
        scrollbar: true, 
        overflow: scroll, 
        scrollrows: true, 

        loadonce:true, 

        autowidth: true, 
        shrinkToFit: false, 

        editurl: 'clientArray', 
        cellsubmit: 'clientArray', 

        afterEditCell: function (id,name,val,iRow,iCol){ 

        },     
        afterSaveCell : function(rowid,name,val,iRow,iCol) { 
         var updtd = jQuery("#list").jqGrid('getCol', name, false, 'sum'); 
         var objs = []; 
         objs[name] = updtd; 
         jQuery("#list").jqGrid('footerData','set',objs); 
        },     

        loadComplete: function(data){ 
         jQuery("#list").jqGrid('footerData','set',{'Employer':'Max Guest Count:'}); 
         var colnames = jQuery("#list").jqGrid ('getGridParam', 'colModel'); 

         dataLen = colnames.length; 
         dataSel = colnames[3]['name'];     

         for (var i = 3; i < colnames.length; i++){      
          var tot = jQuery("#list").jqGrid('getCol', colnames[i]['name'], false, 'sum');        
          var ob = []; 
          ob[colnames[i]['name']] = tot; 
          jQuery("#list").jqGrid('footerData','set',ob); 
         } 

         var ids = grid.getDataIDs(); 
         for (var i = 0; i < ids.length; i++) { 
          grid.setRowData (ids[i], false, {height: 25}); 
         } 

         jQuery ("table.ui-jqgrid-htable", jQuery("#list")).css ("height", 30);     
        },     

        gridComplete: function() { 
          jQuery("#list").jqGrid('setColProp','id',{width:20}); 
          jQuery("#list").jqGrid('setColProp','Employer',{width:80}); 
          jQuery("#list").jqGrid('setColProp','Sponsor',{width:80}); 

          var tabs = $("#tabs"); 
          var width = tabs.width(); 
          jQuery("#list").jqGrid('setGridWidth', width - 80, true); 
          jQuery("#list").jqGrid('setGridHeight', 270); 
        },   
       }); 
      },   
     }); 

     jQuery("#list").jqGrid('setGroupHeaders', { 
       useColSpanStyle: true, 
       groupHeaders:[ 
       {startColumnName: 'id', numberOfColumns: 1, titleText: ''}, 
       {startColumnName: 'Employer', numberOfColumns: 2, titleText: ''}, 
       {startColumnName: dataSel, numberOfColumns: dataLen, titleText: '<Strong><font color="white">Here Comes</font></Strong>'} 
       ] 
     }); 

     $("#addtn").click(function(){ 
      var newRowData = {"Id":"","Employer":"","Sponsor":"",col1:"",col2:"",col3:"",col4:"",col5:"",col6:"",col7:"",col8:"",col9:"",col10:"",col11:"",col12:"",col13:"",col14:"",col15:"",col16:"",col17:"",col18:"",col19:"",col20:""}; 
      jQuery("#list").addRowData(0,newRowData,"first",1);    
      jQuery("#list").editRow(0,true);    
     }); 

     $("#rstbtn").click(function(){ 
      $("#list").jqGrid('setGridParam',{datatype:'json', page:1, current:true}).trigger('reloadGrid') 
     });   
    }; 

I will really appreciate if someone can advice on this.. 

ответ

0

Вероятно, из-за этой линии: loadonce:true, в jqgrid определения. Установите его как false и повторите попытку.

И для перезагрузки, попробуйте этот код:

$('#list').trigger('reloadGrid', [{ page: 1}]); 
+0

Спасибо Slacker за ваше ценное предложение ... Я, конечно, попробовать. –

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