2014-10-09 37 views
0

我想在beforeProcessing中改變數據在網格中呈現之前更改數據,但每次都跳過該函數。我使用jqGrid 4.6.0,所以我不確定我在做什麼錯。以下是我設置所有內容的代碼。讓我知道你是否需要更多細節。任何幫助將是偉大的!jqGrid - beforeprocessing沒有在4.6.0中燒製

 $gridTable.jqGrid({ 
      data: fixData(), 
      datatype: "local", 
      colNames:columnNames, 
      colModel:columnModel, 
      autowidth : true, 
      multiSort: true, 
      sortname: sortName, 
      sortorder: sortOrder, 
      viewrecords: false, 
      rowNum: 20000, 
      rowList: [],  // disable page size dropdown 
      pgbuttons: false, // disable page control like next, back button 
      pgtext: null, 
      onSortCol: onSort, 
      gridComplete: onGridComplete, 
      beforeProcessing: function() { 
       console.log("blah"); 
      }, 
      shrinkToFit:false 
     }); 

回答

0

beforeProcessing的目標是提供一個可行的修改數據從服務器異步返回通過Ajax。在從服務器加載數據的情況下,在創建網格時以及在創建網格之後的下一行JavaScript代碼處沒有數據。數據將在稍後的不知名時刻從服務器返回。特別針對案例beforeProcessing的介紹。 jqGrid使$.ajax呼叫,並直接在起始處呼叫beforeProcessingsuccess回撥內部的回叫$.ajaxbeforeProcessing回調允許修改數據或跳過處理服務器響應(請參閱jqGrid代碼的the lines)。

您的代碼使用datatype: "local"以及您使用data選項提供的所有輸入數據。在沒有問題的情況下。如果您需要修改輸入數據,請直接進行。

var mydata = fixData(); 

// now one can make any modifications of mydata. 

// now one can create jqGrid using modified mydata as the input data. 
$gridTable.jqGrid({ 
    data: mydata, 
    datatype: "local", 
    ... 
    gridview: true, 
    autoencode: true 
}); 

我在上面的代碼包含兩個選項gridview: true,這提高了電網的填充物的性能,並且autoencode: true迫使的jqGrid解釋輸入數據作爲純數據而不是作爲HTML片段。在輸入數據內部的特殊HTML字符如&,<,>等將始終正確顯示。

一些其他的選擇(viewrecords: falserowList: []pgbuttons: falsepgtext: null)我建議你刪除,因爲那裏有莫意義,如果你不使用pagertoppager參數。

+0

感謝您的建議,我會更改選項。我明白你對beginprocessing的看法 - 我希望我可以使用它來在排序之後和呈現網格之前查看數據。 – 2014-10-13 13:14:58