2012-05-03 19 views
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中沒有錯誤。我究竟做錯了什麼?

+0

我想通了!我沒有使用帶小數點的虛擬成本值,因此格式化功能無法正常工作。雖然我沒有得到任何錯誤。我改變它來檢查是否(s.indexOf('。')!= -1),現在一切正常。 – drearyworlds

回答

0

我想通了!我沒有使用帶小數點的虛擬成本值,因此格式化功能無法正常工作。雖然我沒有得到任何錯誤。我改變它檢查if (s.indexOf('.') != -1)現在一切都很好。