2012-05-03 2 views
0

Кажется, что это должно быть просто. Вот мой магазин данных декларации:Как сделать Ext.Panel показать DataView с помощью JsonStore и XTemplate?

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 с DataView в нем:

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), и теперь все в порядке.

Смежные вопросы