ExtJS Поиск хранилища данных для значения

Как мне найти хранилище данных для конкретной записи? Я пытался найти () и 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 ответа

Решение

Есть несколько проблем с вашей конфигурацией. Прежде всего id-свойство чтения должно быть idProperty-имущество. The 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'));
    }
});

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

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

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

РЕДАКТИРОВАТЬ

Кроме того, я только что заметил, что в вашем 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'}
    ]
})
Другие вопросы по тегам