2012-03-06 5 views
0

Я новичок в sencha. Я разрабатываю приложение, использующее treestore и nestedList. Я не могу загрузить данные, возвращенные из coldfusion component.it, показывает null.Sencha 2 - отображение нулевого значения во вложенном списке

Вот мои 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 («»),

Вместо первого имени, что я должен отображать здесь ??? Я пробовал много методов, но не использовать, пожалуйста, помогите .....

ответ

0

Ваш JSON возвращается коллекцию Массивы как

["bhpAgent", "Jan"], 

но определение поля ожидает ответа быть совокупность объектов, таких как

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

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

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

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

+0

Спасибо за ответ. Я преобразовал результат coldfusion в queryto struct form, а затем получил результат как {«LoginID»: «bhpAgent», «FIRSTNAME»: «Jan»}. – usershaf

+0

Это работало? – grumplet

+0

да, это сработало :) – usershaf

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