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'}
]
})