2011-12-27 57 views
2

我正在使用Backbone以及jQuery和jqGrid,並遇到與使用jqGrid綁定主幹集合的問題。如何將骨幹模型綁定到jqGrid?

這是我從服務器獲得響應:

{"DogModel":[ 
    {"name":"Jane","breed":"Great Dane"}, 
    {"name":"Rocky","breed":"golden Retriver"}, 
    {"name":"Jim","breed":"Lab"} 
]} 

看來,我得考慮象

[{"name":"Jane","breed":"Great Dane"}, 
{"name":"Rocky","breed":"golden Retriver"}, 
{"name":"Jim","breed":"Lab"}] 

// jqGgrid代碼數據

jQuery("#dogsList").jqGrid({ 
    datatype: 'json', 
    data:this.collection.models.toJSON(), 
    width:'100%', 
    colNames:['name', 'breed'], 
    colModel:[ 
     {name:'name', align:'left'}, 
     {name:'breed', align:'left'} 
    ], 
    loadComplete : function(data) { 
     alert('grid loading completed ' + data); 
    }, 
    loadError : function(xhr, status, error) { 
     alert('grid loading error' + error); 
    } 
}); 

我試着用data:this.collection.models[0].toJSON()data:this.collection.toJSON()代替data:this.collection.models.toJSON(),它拋出意外的cha類別解析錯誤。

這是什麼我需要做的將模型綁定到jqGrid?

回答

2

我不完全知道jqGrid,但我看他們的例子,我找到了一個解決方案,在您的網格中添加模型。

您需要將您的datatype更改爲local,並在您的jqGrid上手動添加每行。

最好的事情是看到的jsfiddle代碼工作和學習的代碼是如何工作的:http://jsfiddle.net/Atinux/qM98D/

+1

謝謝Atinux。將數據類型更改爲本地作品。但隨着它做了一些調整。使用來自服務器的相同響應(即,我沒有從解析中返回res.DogModel,而是按照原樣返回了res)。設置數據:Dogs.models [0] .get('dogModel'),就可以實現。 – Ram 2011-12-28 14:01:01

+0

您不想爲大數據集使用addRowData。 – 2013-02-28 12:44:09

+0

,但是這並不能解釋模型改變時該行如何重新渲染!我想我們需要將這個邏輯一起寫出來。 – 2013-04-10 09:53:26

1

你應該嘗試:

datatype: 'local', 
data:this.collection.toJSON() 

這對我的作品。