Преобразование полей ExtJS XmlReader не работает - PullRequest
1 голос
/ 24 января 2012

Я обновил это, так как вы предположили, что оно, похоже, не работает с обновленным отображением. Похоже, не получается, что отображение поля этого Ext.data.XmlReader работает.

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

    Ext.onReady(function(){
    Ext.define('Book',{
        extend: 'Ext.data.Model',
        fields: [
            // set up the fields mapping into the xml doc
            // The first needs mapping, the others are very basic
            'Time', 'UserID', 'Type', 'Description','val0'
        ]
    });


        // create the Data Store
    var store = Ext.create('Ext.data.Store', {
        model: 'Book',
        autoLoad: true,
        proxy: {
            // load using HTTP
            type: 'ajax',
            url: 'audit-v2.xml',
            // the return will be XML, so lets set up a reader
            reader: {
                type: 'xml',
                // records will have an "Item" tag
                //record: 'rows',
               // idProperty: 'ASIN',
                //totalRecords: '@total'
                 root: 'Root',
                 record: 'AuditTrail'
            }
        }
    });


    // create the grid
    var grid = Ext.create('Ext.grid.Panel', {
        store: store,
        columns: [
            {text: "Time", flex: 1, dataIndex: 'Time', sortable: true},
            {text: "UserId", width: 180, dataIndex: 'UserId', sortable: true},
            {text: "Type", width: 115, dataIndex: 'Type', sortable: true},
            {text: "Description", width: 100, dataIndex: 'Description', sortable: true}
            {text: "Value", width: 100, dataIndex: 'Value', sortable: true}
        ],
        renderTo:'example-grid',
        width: 540,
        height: 200
    });
});

Вот XML

<?xml version="1.0" encoding="UTF-8"?>
  <Root>
    <AuditTrail>
      <Time>2012-01-10 09:27:30 (GMT-05:00)</Time>
      <UserID>DX</UserID>
      <Type>FY [REC]</Type>
      <Description>Server: wamp</Description>
      <val0>1</val0>
    </AuditTrail>
    <AuditTrail>
      <Time>2012-01-10 09:27:30 (GMT-05:00)</Time>
      <UserID>DX</UserID>
      <Type>FY [REC]</Type>
      <Description>Server:tomcat</Description>
      <val0>1</val0>
    </AuditTrail>
    <AuditTrail>
      <Time>2012-01-10 09:27:30 (GMT-05:00)</Time>
      <UserID>DX</UserID>
      <Type>FY [REC]</Type>
      <Description>Server: apache</Description>
      <val0>1</val0>
    </AuditTrail>
</Root>

Кажется, он не загружает XML

Спасибо

1 Ответ

0 голосов
/ 24 января 2012

Вы устанавливаете свойство record считывателя на один уровень выше. В вашем случае я считаю, что было бы лучше установить root на Root и record на AuditTrail. Кроме того, в вашей Book модели вы должны изменить mapping вашего поля time, чтобы не выполнять относительный запрос, т. Е. Поле записи будет AuditTrail, поэтому вам не нужно детализировать уровень в запросе:

    // ...

    Ext.define('Book',{
        extend: 'Ext.data.Model',
        fields: ['Time', 'UserID', 'Type', 'Description','val0']
    });

    // ...

    proxy: {
        // load using HTTP
        type: 'ajax',
        url: 'audit-v2.xml',
        // the return will be XML, so lets set up a reader
        reader: {
            type: 'xml',
            root: 'Root',
            record: 'AuditTrail'
        }
    }

    // ...

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...