Sencha 2 - отображение нулевого значения во вложенном списке - PullRequest
0 голосов
/ 06 марта 2012

Я новичок в сенче. Я занимаюсь разработкой приложения с использованием treestore и nestedList. Я не могу загрузить данные, возвращенные из coldfusion component.it показывает 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>

My 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 голосов
/ 08 марта 2012

Ваш JSON возвращает коллекцию массивов, например

["bhpAgent", "Jan"], 

, но определение поля ожидает, что ответом будет набор объектов, таких как

{"LoginID": "bhpAgent", "FIRSTNAME": "Jan"}. 

Не уверен в лучшем решении,Может ли ColdFusion генерировать объекты JSON вместо этого?

Если нет, возможно, создайте подкласс Ext.data.reader.JSON и переопределите getResponseData ().

Может также стоить проверить документы TreeStore, поскольку это представление имеет дополнительные требования к древовидным данным.

...