0

ファイルの一覧表示には、動的リモート データ (JSON) を含む Extjs ツリー パネルが必要です。

日付フィールド名が Extjs ツリー ストア フィールドに適合しません。そのため、リーフ フィールドとテキスト フィールドを追加するなど、適合するように再マッピングする必要があります。

返される JSON データは次のようになります。

[{
   "id":1,
   "yourRefNo":"A91273",
   "documentName":"Test Document",
   "documentFileName":"login_to_your_account-BLUE.jpg",
   "updatedBy":"root root",
   "updatedAt":"\/Date(1343012244000)\/"
}]

これがツリー パネルです。

Ext.define('App.view.Document.DocumentList', {
    extend :'Ext.tree.Panel',
    rootVisible : false,
    alias: 'widget.Document_list',
    store: 'DocumentList_store'

});

そしてこれが店です:

Ext.define('App.store.DocumentList_store', {
    extend: "Ext.data.TreeStore",
    model: 'App.model.DocumentList_model',
    proxy: {
        type: 'ajax',
        url: '/Document/GetDocumentList/',
        actionMethods: {
            read: 'POST'
        },
        reader: {
            type: 'json',
            root: '' // there is no root
        },
        pageParam: undefined,
        startParam: undefined,
        pageParam: undefined
    },
    root: {
        children: []
    },
    autoLoad: false,
    listeners: {
        append: function (thisNode, newChildNode, index, eOpts) {
            console.log(newChildNode.get('documentName')); // 'Test Document'
            newChildNode.set('leaf', true);
            newChildNode.set('text', newChildNode.get('documentName'));
            // it does not add to tree panel. 

        }
    }
});

サーバーからデータをロードした後、追加機能をうまく呼び出します。その後、ツリーパネルには何も表示されません。

私が間違っていることは何ですか?私にアドバイスしてください。

ありがとう

[編集]

これがモデルで、

Ext.define("App.model.DocumentList_model", {
    extend: "Ext.data.Model",
    fields: [
        'id','yourRefNo','documentName','documentFileName','updatedBy','updatedAt'
    ]
});
4

1 に答える 1

1

私はあなたのコードを私の作業コードと融合させています。これが機能するかどうかを確認してください:

モデル:

Ext.define("App.model.DocumentList_model", {
    extend: 'Ext.data.Model',
    fields: [
        {name: 'id'},
        {name: 'yourRefNo'},
        {name: 'documentName' }, 

        {name: 'documentFileName'},
        {name: 'updatedBy'},
        {name: 'updatedAt', convert: function(v) { return v;} }, // Notice you can do field conversion here

        {name: 'leaf', type: 'boolean', defaultValue: false, persist: false},
    ],

    proxy: {
        type: 'ajax',
        url: '/Document/GetDocumentList/',
        actionMethods: {
            read: 'POST'
        },
        reader: {
            type: 'json',
            root: 'children' 
        },
    },    
});

店:

Ext.define('App.store.DocumentList_store', {
    extend: "Ext.data.TreeStore",
    model: 'App.model.DocumentList_model',

    root: {
        text: 'Root',
        id: null,
        expanded: true
    },

    autoLoad: false,
});

JSON レスポンス:

{
    "success":true,
    "children":[{
        "id":1,
        "yourRefNo":"A91273",
        "documentName":"Test Document",
        "documentFileName":"login_to_your_account-BLUE.jpg",
        "updatedBy":"root root",
        "updatedAt":"\/Date(1343012244000)\/",
        "leaf":false
     }]
}
于 2012-07-24T21:03:29.640 に答える