これは単純なはずです。これが私のデータストア宣言です:
var dataStore = new Ext.data.JsonStore({
autoLoad : true,
url : '#mvclink(' json.getCostReportsJsonData ')#&layout_type=txt',
root : 'data',
id : 'dataStoreId',
fields : ['project', 'cost']
});
URLは実際にはColdFusionによって生成され、ColdFusionはクエリを呼び出してJson形式に変換します。Jsonオブジェクトは次のように返されるため、ここではすべてが正しく機能すると思います。
{"recordcount":1,"columnlist":"project,cost","data":[{"project":"ABC","cost":2250}]}
今のところダミーデータがあるので、1行だけが返されます。
次に、DataViewを含む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でエラーは発生しません。私は何が間違っているのですか?