ExtJS Поиск хранилища данных для значения - PullRequest
1 голос
/ 31 марта 2011

Как найти в хранилище данных конкретную запись?Я пытался найти () и findBy (), но оба возвращают -1.

var index = clientStore.find('ClientID', '37');

У меня есть поле со списком клиентов.То, что я хочу, - это возможность установить значение по умолчанию для этой комбинации.У меня правильно установлены значения с помощью setValue, и я даже могу установить отображаемое значение с помощью setRawValue, но я не могу запросить хранилище данных на основе clientID и получить название компании для использования в setRawValue.

что имеет смысл?

Вот код хранилища данных в ответ на вопросы ниже (извините, я не могу вставить его туда)

var frmClientStore = new Ext.data.Store({
    id: 'frmClientStore',
    proxy: new Ext.data.HttpProxy({
        url: 'url here', 
        method: 'POST'
    }),
    reader: new Ext.data.JsonReader({
        root: 'rows',
        id: 'recordID'
    },[
        {name: 'recordID', type: 'int', mapping: 'recordID'},
        {name: 'ClientID', type: 'int', mapping: 'clientID'},
        {name: 'CompanyName', type: 'string', mapping: 'companyName'}
      ])
});

Ответы [ 2 ]

3 голосов
/ 31 марта 2011

Есть несколько проблем с вашей конфигурацией.Прежде всего, id -свойство чтения должно быть idProperty -свойством.id -свойство магазина должно быть storeId -свойством (id устарело).И тогда ваша переменная называется frmClientStore, а вы ссылаетесь на clientStore в своем коде (может быть опечатка).

var frmClientStore = new Ext.data.Store({
    storeId: 'frmClientStore',
    proxy: new Ext.data.HttpProxy({
        url: 'url here', 
        method: 'POST'
    }),
    reader: new Ext.data.JsonReader({
        root: 'rows',
        idProperty: 'recordID'
    },[
        {name: 'recordID', type: 'int', mapping: 'recordID'},
        {name: 'ClientID', type: 'int', mapping: 'clientID'},
        {name: 'CompanyName', type: 'string', mapping: 'companyName'}
      ])
});

И, наконец: вы уверены, что ваш магазин был загружен при попытке извлечь из него записи?

Попробуйте

frmClientStore.load({
    callback: function(rs) {
        console.log(rs);
        console.log(this.find('ClientID', '37'));
    }
});
0 голосов
/ 31 марта 2011

Способ, который вы перечислили, должен быть правильным. Однако я должен отметить, что имя поля чувствительно к регистру. Также возможно, что он ищет строку (как вы перечислили) вместо числа (которое может быть тем, что вы хотите).

Предполагая, что 'ClientID' является правильным именем поля, вам следует попробовать следующее:

var index = clientStore.find('ClientID', 37);

EDIT

Кроме того, я только что заметил, что в вашем JsonReader что-то не так. Разве это не должно быть так:

//...
reader: new Ext.data.JsonReader({
    root: 'rows',
    id: 'recordID'
    fields: [ //list fields here as part of the JsonReader
        {name: 'recordID', type: 'int', mapping: 'recordID'},
        {name: 'ClientID', type: 'int', mapping: 'clientID'},
        {name: 'CompanyName', type: 'string', mapping: 'companyName'}
    ]
})
...