extjs嵌套数据视图选择一个节点

时间:2012-03-15 12:06:17

标签: select extjs nested dataview extjs3

我有以下tpl的数据视图。

  <tpl for=".">
    <tpl for="departments">
                 {title}
    </tpl>
    <tpl for="records">
        <div class="thumb-wrap">
           {name}
        </div>
    </tpl>
</tpl>

我的json像这样重新开始

        reader : new Ext.data.JsonReader(
         {
            root : 'data', 
         },
         [ 
            'departments' ,
            'records'
          ]
        ),

我的项目选择在我的录音中

itemSelector : 'div.thumb-wrap',

这是我的json数据

{
"success": true,
"data": [
    {
        "departments": [
            {
                "title": "name"
            }
        ],
        "records": [
            {
                "name": "name"
            },
            {
                "name": "name"
            }
        ]
    },
    {
        "departments": [
            {
                "title": "name"
            }
        ],
        "records": [
            {
                "name": "name"
            }
        ]
    }
]

}

如何使用extjs在数据视图中选择记录? 以及如何选择录音? 我使用了getSelectedRecords()但它返回了部门和记录的数组。 TNX

2 个答案:

答案 0 :(得分:1)

我非常确定在ExtJS 4上不推荐使用getSelectedRecords()

您可以尝试这样做:

var records = data.getRecords();

这将返回Ext.data.Model[]。比,您可以访问所有属性,如通常的模型:

record.get('departments');
record.get('records');

答案 1 :(得分:0)

您正在使用您的记录结构来对抗系统。 DataView希望一条记录与一个可选项对应。但是您希望在一条记录中包含多个可选项。不起作用 - API不是为这样的东西而设计的。

您的选择似乎是:

  • 为每组记录创建单独的DataView组件。
  • 创建可以处理分组的自己的DataView组件。
  • 将Grid与GroupingView一起使用。您必须将记录结构更改为类似下面的内容,但这是最简单的选择。虽然......你必须牺牲DataView提供的相当大的灵活性。

    "data": [
        {
            {
                "department": "Department 1"
                "name": "record 1"
            },
            {
                "department": "Department 1"
                "name": "record 2"
            },
            {
                "department": "Department 2"
                "name": "record 1"
            },
            {
                "department": "Department 2"
                "name": "record 2"
            },
        ]
    }