"Если отображаемое в данный момент значение соответствует комбинированному хранилищу, то
должен отображаться как выбранный, но это не означает, что "
Поле со списком не совпадает со значением displayField
, оно совпадает со значением valueField
.
Хранилище данных комбинированного списка, которое жестко запрограммировано как ваше, автоматически примет первый элемент (например, «1») как valueField
, а второй элемент (например, «NOT_STARTED») как displayField
.
Поскольку ни одно из «числовых» значений («1», «2», «3») не соответствует значениям в этом столбце («NOT_STARTED», «IN_PROGRESS», «COMPLETED»), он ничего не показывает.
Если я не понял это неправильно, похоже, что хранилище данных для самой сетки содержит эти данные столбца "status" (или как вы называете этот столбец) в виде строки, а не числа (то есть "NOT_STARTED", "IN_PROGRESS", «ЗАВЕРШЕНО» вместо 1, 2, 3).
Вы можете сделать две разные вещи:
EASIEST: Просто оставьте поле значения в виде строки, не делайте ее числом.
HARDER: Если вам действительно нужно, чтобы это был номер по некоторой (неустановленной) причине:
- Вы изменяете данные в сетке , так что все данные
для этого столбца вместо строки используется число (1,2,3).
- Добавьте конфигурацию
renderer
в этот столбец, чтобы отображать числа в виде
соответствующие строки, когда строка не редактируется.
- Затем сделайте так, как вы пытаетесь с настройкой хранилища данных, как
[number - string]
объектов. Кроме того, возьмите номер из кавычек в вашем магазине, если
ты собираешься делать это таким образом.
Конечно, если вы уже используете конфигурацию renderer
в этом столбце, проблема может заключаться в том, что у вас есть число в кавычках.
Надеюсь, все это имеет смысл.
EDIT:
Вот код.
Сначала поместите элементы статуса в отдельное хранилище - вот так:
var statusStore = Ext.create('Ext.data.SimpleStore', {
fields: ['id', 'status'],
data : [
['0', 'NOT_STARTED'],
['1', 'IN_PROGRESS'],
['2', 'COMPLETED']
]
});
Во-вторых, измените значение «status» на требуемую цифру («0»)
var data = {
root: [{
"objectType":"com.yagna.common.domain.Project",
"objectId":"3072",
"expectedEndDate":"",
"startDate":"2011-06-27 13:06:00.0",
"name":"Milestone-11",
"actualEndDate":"",
"id":"4376",
"Status":"0"
}]
};
В-третьих, добавьте средство визуализации в конфигурацию вашего столбца и измените хранилище, указанное в редакторе, на то, которое мы создали выше (statusStore).
{
id: 'Status',
width: 20,
text: 'Status',
dataIndex: 'Status',
filter: {type: 'combobox'},
sortable: true,
groupable: false,
// add this renderer
renderer: function(value) {
var idx = statusStore.find('id', value)
var rec = statusStore.getAt(idx);
return rec.get('status');
},
editor:{
allowBlank: true,
xtype:'combobox',
valueField:'field1',
displayField:'field2',
triggerAction:'all',
mode: 'local',
// change this store to refer to the one we created
store: statusStore,
value:0,
lazyRender: true
}
},
Если это сработает, не забудьте отметить чек на ответ слева.