0

これは単純なはずです。これが私のデータストア宣言です:

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でエラーは発生しません。私は何が間違っているのですか?

4

1 に答える 1

0

私はそれを考え出した!小数点付きのダミーコスト値を使用していなかったため、フォーマット関数が正しく機能していませんでした。ただし、エラーは発生しませんでした。チェックするように変更しましたがif (s.indexOf('.') != -1)、すべて問題ありません。

于 2012-05-04T21:47:08.727 に答える