Ниже я пытаюсь получить запись определенной категории в моем хранилище данных для поля категории в моей сетке на основе того, какое значение хранится для значения этого поля (столбца). Значение «categoryId» возвращает «2». Почему findRecord не возвращает запись? Он отображает «-1» для «категории». Когда я использую его в качестве хранилища со списком для раскрывающегося списка в моей форме, существует запись, в которой ключ = 2. В конечном итоге я хочу найти запись, где ключ = 2, а затем вернуть свойство значения, чтобы оно отображало свойство значения этой записи в моем представлении сетки.
К вашему сведению: свойство «ключ» — это идентификатор записи категории, а свойство «значение» — это имя записи категории, которую я хочу показать (или отобразить в ячейке сетки).
Магазин категорий:
Ext.define('DropdownOption', {
extend: 'Ext.data.Model',
fields: [
{ name: 'key' },
{ name: 'value' }
]
});
var statusDropdownStore = new Ext.data.Store({
proxy: new Ext.ux.AspWebAjaxProxy({
url: '/track/Controls/Shared/GeneralService.asmx/GetDropdownOptions',
actionMethods: {
read: 'POST'
},
extraParams: {
user_login: authUser,
table_name: '[status]'
},
reader: {
type: 'json',
model: 'DropdownOption',
root: 'd'
},
headers: {
'Content-Type': 'application/json; charset=utf-8'
}
})
});
Столбцы Просмотр (Ext.grid.Panel):
columns: [
... snip ...
{ text: 'Status', dataIndex: 'status', sortable: true,
renderer: function(value, metaData, record, row, col, store, gridView) {
var categoryId = record.get('status');
alert("categoryId: " + categoryId); // displays "categoryId: 2"
if (categoryId > 0)
{
var category = statusDropdownStore.findRecord('key', categoryId);
alert("category: " + category); // displays "category: -1" which usually means not found
//alert(category.get('value'));
return ''; // return value property of category record
}
else
{
return '';
}
}
},
{ text: 'Date Modified', dataIndex: 'date_modified', sortable: true, renderer: Ext.util.Format.dateRenderer('m/d/Y') },
... snip ...
],
====================
01.08.2012 в 17:21 обновление:
Хорошо, значения пусты при начальной загрузке сетки (это означает, что она попадает в строку кода «return '';». Но когда я захожу в запись и нажимаю «Сохранить», все строки в сетке показывают название категории --используя новый код ниже. В качестве примечания: раньше у меня был столбец id с именем «key», но я переименовал его в «id».
{ text: 'Status', dataIndex: 'status', sortable: true,
renderer: function(value) { //, metaData, record, row, col, store, gridView) {
if (value > 0) {
var r = statusDropdownStore.findRecord('id', value);
if (r != null)
{
var catName = r.get('value');
return catName;
}
}
return '';
}
},
console.log(value)
как первая строка рендерера? - person egerardus   schedule 02.08.2012