вложенное представление данных extjs выберите узел

у меня есть представление данных со следующим tpl.

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

и мой json redear вот так

        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(), но он возвращает массив отделов и записей. спасибо


person masoud sharifi    schedule 15.03.2012    source источник
comment
Я предполагаю, что вы используете ExtJS 4.   -  person Daniel Ribeiro    schedule 15.03.2012


Ответы (2)


Я почти уверен, что getSelectedRecords() устарела в ExtJS 4.

Вы можете попробовать сделать что-то вроде этого:

var records = data.getRecords();

Это вернет Ext.data.Model[]. Затем вы можете получить доступ ко всем свойствам, как в обычной модели:

record.get('departments');
record.get('records');
person Daniel Ribeiro    schedule 15.03.2012

Вы работаете против системы со своей структурой записей. 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"
            },
        ]
    }
    
person Rene Saarsoo    schedule 16.03.2012