我有一個當前使用JQGrid的Web應用程序,但我試圖介紹Backbone.js以改進代碼組織。我想要做的是使用集合從服務器獲取數據,然後將JSON信息添加到我定義的JQGrid中,但我無法使其工作。我jqGrid的定義是這樣的:骨幹:從服務器獲取數據到JQGrid
var tareasHumanasTable = $("#grillaTH").jqGrid({
datatype: 'local',
height: 'auto',
colNames:[ colNames...],
colModel:[ colModel...]
}
我的型號和款式都是這樣定義的:
window.TareaHumana = Backbone.Model.extend();
window.TareaHumanaCollection = Backbone.Collection.extend({
model: TareaHumana,
url: "bandejaTareas/buscarTH"
});
我有一個按鈕,點擊時啓動服務器的通信。現在是這樣做的:
$(function(){
$("#botonBuscar").bind('click',function(){
var tareaHumanaList = new TareaHumanaCollection();
tareaHumanaList.fetch({data: $("#formBandejaTareas").serializeObject()});
//alert("tareaHumanaList.toJSON(): " + tareaHumanaList.toJSON());
tareaHumanaList.each(function(tareaHumana, i){
//alert("tareaHumana.toJSON(): " + tareaHumana.toJSON());
tareasHumanasTable.jqGrid('addRowData', (i + 1), tareaHumana.toJSON());
});
該代碼根本不起作用。使用Firebug,我驗證了服務器以正確的格式發送數據,但代碼不起作用。最奇怪的是,當我取消注意「警報(...)」行時,所有事情都開始奏效。
你幾乎沒有發佈jqGrid代碼,也沒有測試JSON數據。我自己並不使用骨幹,但是你發佈的jqGrid用法的部分是非常不起作用的。 'addRowData'是填補網格最慢的方法。因爲你沒有填充它,所有的問題都可以在'tareaHumana.toJSON()'的數據中。數據必須對應網格的'colModel',但正如我在循環中使用'addRowData'之前所寫的那樣,這真是個壞主意。你應該更好地描述你如何填補網格。無論如何,一些JSON響應和colModel的例子是非常必要的。 – Oleg
這個問題與JSON解析無關,它只涉及來自Backbone的異步提取。在網格人口中,我遵循以下建議:http://stackoverflow.com/questions/8646622/how-to-bind-backbone-model-to-jqgrid。你有其他想法嗎? –
'addowData'的用法差別很大。我會改變你參考的演示[這一個](http://jsfiddle.net/qM98D/67/)。使用數據創建網格很重要*如果您創建網格並添加100行,那麼在插入* one *行或在頁面上更改* one *元素時,您會看到所有現有元素的位置將會重新計算*。通過使用'gridview:true,data:mydata'創建網格,您可以創建具有全身內容的網格作爲一個操作。您擁有的行數越多,就會看到差異。 – Oleg