0

動的ツリーを構築しようとしています。C# WCF サービスからデータを取得しています。JSONデータを返していますが、データがツリーに反映されていません。私はEXTJS 4を使用しています。

.Js コード -

Ext.require([
    'Ext.tree.*',
    'Ext.data.*',
    'Ext.tip.*'
 ]);    

Ext.onReady(function () {
    Ext.QuickTips.init();

var store = Ext.create('Ext.data.TreeStore', {
        proxy: {
                 type: 'ajax',
                 url: 'Services/InfographicsDataService.svc/GetTree'
               },
        root: {
                 text: 'Ext JS',
                 id: 'src',
                 expanded: true
              },
      reader: {
                 type: 'json',
                 root: 'd'
              }
    }); //  End of store code       

    var tree = Ext.create('Ext.tree.Panel', {
             store: store,
             viewConfig: 
             {
                plugins:{ ptype: 'treeviewdragdrop' }
             },
        renderTo: 'tree-div',
        height: 300,
        width: 250,
        title: 'Files',
        useArrows: true
    }); // End of tree    
}); // End of ready function   

これは私のサービス終了時のコードです-::

[OperationContract]
[WebGet]
 public List<TreeNode> GetTree()
 {
   List<TreeNode> nodes = new List<TreeNode>();
      nodes.Add(new TreeNode() { id="src/ModelManager.js", text = 
     "ModelManager.js" });

       nodes.Add(new TreeNode() { id="src/data", text = "data" });
      nodes.Add(new TreeNode() { id="src/draw", text = "draw" });
      return nodes;
 }

wcf サービスによって返された Json --

{"d":[
  {
    "__type":"TreeNode:#Infographics.Services.Model",
    "id":"src\/ModelManager.js",
    "leaf":false,
    "text":"ModelManager.js"    
  },
 { 
   "__type":"TreeNode:#Infographics.Services.Model",
   "id":"src\/data",
   "leaf":false,
   "text":"data"
 },
 {
   "__type":"TreeNode:#Infographics.Services.Model",
   "id":"src   \/draw",
   "leaf":false,
   "text":"draw"
 }]
}

呼び出しはサーバーに送られ、データを返しますが、ツリー ページにノードを追加しません。ルート Extjs ノードのみが表示されます。

最初は、「d」に設定する必要があるのはリーダーのルートプロパティだけだと思っていましたが、他に足りないものがあります。

誰かが私が犯している小さな間違いを見つけるのを手伝ってもらえますか?

4

1 に答える 1

0

このまま店を変えてやってみるか、

var store = Ext.create('Ext.data.TreeStore', 
{
  proxy: 
  {
     type: 'ajax',
     url: 'Services/InfographicsDataService.svc/GetTree',
     reader: 
     {
        type: 'json',
        root: 'd'
     }
  },
  root:
  {
     text: 'Ext JS',
     id: 'src',
     expanded: true
  }  
});
于 2012-07-16T13:46:57.377 に答える