0
這看起來應該很簡單。這裏是我的數據存儲聲明:如何使Ext.Panel使用JsonStore和XTemplate顯示DataView?
var dataStore = new Ext.data.JsonStore({
autoLoad : true,
url : '#mvclink(' json.getCostReportsJsonData ')#&layout_type=txt',
root : 'data',
id : 'dataStoreId',
fields : ['project', 'cost']
});
URL實際上由ColdFusion生成,它調用查詢並將其轉換爲Json格式。我覺得一切正常這裏,因爲JSON對象回來爲:
{"recordcount":1,"columnlist":"project,cost","data":[{"project":"ABC","cost":2250}]}
我有虛擬數據在那裏了,所以返回只有一行。
接下來,我宣佈一個Ext.Panel在這一個數據視圖:
var myPanel = new Ext.Panel({
layout : 'fit',
id : 'myPanel',
title : "My Panel",
monitorResize : true,
deferredRender : false,
items : new Ext.DataView({
store : dataStore,
tpl : costReportTemplate
}),
renderTo : Ext.getBody()
});
引用的模板是XTemplate:
var costReportTemplate = new Ext.XTemplate(
'<tpl for=".">',
'<p><b>{project}</b>: {cost:this.format}</p>',
'</tpl>', {
format : function (v) {
var s = Ext.util.Format.usMoney(v);
return s.substring(0, s.indexOf('.'));
}
});
在渲染頁面,我可以看到面板,但它完全是空的,我在Firebug中沒有錯誤。我究竟做錯了什麼?
我想通了!我沒有使用帶小數點的虛擬成本值,因此格式化功能無法正常工作。雖然我沒有得到任何錯誤。我改變它來檢查是否(s.indexOf('。')!= -1),現在一切正常。 – drearyworlds