Sencha 2 - 在嵌套List中显示空值

时间:2012-03-06 10:35:56

标签: sencha-touch-2

我是sencha的新手。我正在使用treestore和nestedList开发一个应用程序。 我无法加载从coldfusion组件返回的数据。它显示为null。

这是我的Viewport.js:

Ext.define('Myapp.view.Viewport', {
  extend: 'Ext.tab.Panel',
  xtype:'newviewport',
  config: { 
        fullscreen: true,
        tabBarPosition: 'top',
        html: 'hiiiiiiiiiii',       
        cls:'test',
        items: [
                {
                    title: 'Sections',
                    iconCls: 'home',         
                    xtype: 'sectionslist'
                }
            ]
               }
  });

我的商店:samplestore.js

Ext.define('Myapp.store.samplestore', {
extend: 'Ext.data.TreeStore',
config: {
    autoLoad: true,
    model: 'Myapp.model.sampleModel',
    proxy: {
        type: 'ajax',
        url: '/sample/sample1.cfc?method=getSections',      
        reader: {
            type: 'json',
            rootProperty:'DATA'
        }
    }
}

});

我的模型:sampleModel.js

    Ext.define("Myapp.model.sampleModel", {
    extend: "Ext.data.Model",
    config: {
        fields: [
            {name: 'LoginID', type: 'string'},
            {name: 'FIRSTNAME', type: 'string'}
        ]
    }
});

我的sample1.cfc:

    <cfcomponent name="sample" output="false"> 
         <cffunction name="getSections" output="no" returnformat="json"    access="remote">         
    <cfquery name="qryGetDetails" datasource="#request.dsn#">
        SELECT TOP 5
            LoginID, FIRSTNAME
        FROM
            tblUser 
    </cfquery>
        <cfreturn qryGetDetails>

  </cffunction>
</cfcomponent>

我的Sectionslist.js

Ext.define('Myapp.view.Sectionslist', {
    extend: 'Ext.dataview.NestedList',
    xtype: 'sectionslist',  
    config: {
        store: 'samplestore'
        itemTpl:  [
                    '{FIRSTNAME}<br/>'
                ].join(''),    
        onItemDisclosure: function(record, btn, index) {
                console.log("worked");
        }
      },  
   //getItemTextTpl: function(node) {
          //console.log(node);
       // return node.data.FIRSTNAME+ ':<strong></strong>';
   // }
});

最后我的json数据:

 {"COLUMNS":["LOGINID","FIRSTNAME"],"DATA":[["bt","Jn"],["jr","Jy"],["b20","Best"],["jman","Jeff"],["fenad","Fn"]]}

请帮助找出我的问题,我无法触发我出错的地方,我得到空值,因为显示数据是错误的: itemTpl:[           '{} FIRSTNAME
'           ] .join(''),

而不是名字,我应该在这里显示什么?我尝试了很多方法,但没有用,请帮忙.....

1 个答案:

答案 0 :(得分:0)

你的JSON正在返回像

这样的数组集合
["bhpAgent", "Jan"], 

但是字段定义要求响应是

之类的对象的集合
{"LoginID": "bhpAgent", "FIRSTNAME": "Jan"}. 

不确定最佳解决方案。 ColdFusion可以生成JSON对象吗?

如果没有,可能是子类Ext.data.reader.JSON并覆盖getResponseData()。

也可能值得检查TreeStore文档,因为该视图对树结构数据有进一步的要求。