2013-03-08 23 views
1

我正在使用inlineNav編輯選項來添加和編輯行。數據正在更新到數據庫,但是我無法找到一種方法在成功保存後刷新網格,而無需發回服務器。如何使用從編輯返回的響應數據來刷新jqgrid

所有的問題&我找到的建議做的 $。('grid')。trigger('reloadGrid');

但是,如果來自服務器的響應已經包含所需的數據,那似乎沒有必要。添加新記錄時主要是一個問題,ID值顯示爲jqg1。

我正在使用ASP.NET MVC4,jqGrid 4.4.4。

這是我的看法

$(document).ready(function() { 
    var emptyMsgDiv = $('<div>No school codes to display.</div>'); 
    var grid = $('#tblSchools'); 

    grid.jqGrid({ 
     datatype: 'json', 
     viewrecords: true, 
     url: '@Url.Action("SchoolsGridData")', 
     editurl: '@Url.Action("EditSchoolsGridData")', 
     colNames: ['School ID', 'Name', 'SACE Number', 'School Code', 'LEA Code', 'DFEE Code', 'Active'], 
     colModel: [ 
        { name: 'SchoolId', index: 'SchoolId', width: 80, key: true }, 
        { name: 'Name', index: 'Name', width: 190, editable: true }, 
        { name: 'SaceSchoolNumber', index: 'SaceSchoolNumber', width: 105, editable: true, sortable: false }, 
        { name: 'Code', index: 'Code', width: 105, editable: true, sortable: false }, 
        { name: 'LeaCode', index: 'LeaCode', width: 80, editable: true, sortable: false }, 
        { name: 'DfeeCode', index: 'DfeeCode', width: 80, editable: true, sortable: false }, 
        { name: 'Active', index: 'Active', width: 80, editable: true, sortable: false } 
     ], 
     shrinkToFit: true, 
     height: "100%", 
     caption: 'School list', 
     rowNum: 10, 
     rowList: [10, 15, 20], 
     emptyrecords: 'No school codes to display.', 
     pager: '#schoolsPager', 
     loadComplete: function() { 
      var count = grid.getGridParam(); 
      var ts = grid[0]; 
      if (ts.p.reccount === 0) { 
       grid.hide(); 
       emptyMsgDiv.show(); 
      } else { 
       grid.show(); 
       emptyMsgDiv.hide(); 
      } 
     } 
    }).trigger('reloadGrid', [{ page: 1 }]); 

    emptyMsgDiv.insertAfter(grid.parent()); 

    grid.jqGrid('navGrid', "#schoolsPager", { edit: false, add: false, del: true }); 
    grid.jqGrid('inlineNav', '#schoolsPager', { 
     addParams: { 
      position: "last", 
      addRowParams: { 
       "keys": true, 
       "aftersavefunc": function (rowid, response) { 
        alert('row: ' + rowid + ', response: ' + $.param(response)); 
       } 
      } 
     }, 
     editParams: { 
      "aftersavefunc": function (rowid, response) { 
       alert('row: '+rowid+', response: '+response); 
      } 
     } 
    }); 

    }); 
</script> 
<h3>Maintain Schools</h3> 

<table id="tblSchools"></table> 
<div id="schoolsPager" class="gridPager"></div> 

和我的控制器

public JsonResult EditSchoolsGridData(string oper, string SchoolId, string Name, string SaceSchoolNumber, string Code, string LeaCode, string DfeeCode, string Active) 
{ 
    [Update Logic] 

    return SchoolsGridData(string.Empty, "asc", 1, 10); 
} 

[HttpGet] 
public JsonResult SchoolsGridData(string sidx, string sord, int? page, int? rows) 
{ 
    [Get data logic] 
} 

我可以看到顯示在aftersavefunc響應JSON,但無法找到其綁定到一個方法格。

我試圖做甚至可能嗎?

回答

0

可以使用addRowData方法將數據設置爲網格與我們重裝電網

jQuery("#tblSchools").jqGrid('addRowData', response.SchoolId, response, "first"); 

See the jqgrid methods wiki for more details

+0

感謝您的。我認爲addRowData更加針對單行,但在wiki上面的是addJSONData。指出我在正確的方向。 – 2013-03-08 03:08:04

+0

不客氣。 addJSONData是添加多行,addRowData將添加一行。然後還有一個更類似的方法setRowData,它將使用行的id替換新數據。 – Kris 2013-03-08 03:11:49

相關問題