Добавить строку с NULL для ComboBox
Всем привет!
Столкнулся недавно с тривиальной задачей, для которой так и не нашел нормального решения. Мне нужно добавить в Комбобокс запись с id: NULL, чтобы можно было очищать связи между сущностями в БД. Пока что сделал через событие load:
store: {
type: 'positions',
pageSize: 0,
listeners: {
load: function(store) {
var rec = { id: null, value: 'Не выбрано', valueEn: 'Не выбрано'};
store.autoSync = false;
store.insert(0, rec);
}
}
},
Строка появляется, НО...далее идут проблемы. Проблема 1. Несмотря на то, что в Store мы пишем NULL, запись создается с id равном Positions-1 (2, 3 итп) и на сервер уходит именно так, если не соблюсти ряд условий. Как сделать по умолчанию NULL я так и не нашел. Пробовал для id целых 3 параметра по очереди без успеха: defaultValue: null, allowNull: true, persist: false Проблема 2. Если в главной модели нет внешнего ключа, который мы и обновляем, то сервер выдает ошибку SQL: SQLSTATE[HY000]: General error: 1366 Incorrect integer value: 'Positions-1' for column 'positionId' Запись новая при этом выбирается нормально из Combobox! Если мы объявим таки наш ключ в модели вот так:
{
type: 'int',
name: 'positionId'
},
То мы так и не сможем выбрать новую запись из Combobox! Никак, она просто обнуляется после щелчка и поле красное. А если мы пропишем связь:
{
type: 'int',
name: 'positionId'
reference: 'Positions'
},
То новая строка выбирается только на второй раз! :blink: Первый раз кликаем и поле просто очищается, при этом становится красным, т к у нас allowBlank: false. На второй раз можно выбрать и только потом уже нажать "Сохранить". На сервер уйдет NULL при этом как нам и нужно. Это какое-то очень сильное колдунство! Искал через гугл и по форуму Сенчи — вопрос этот задается еще с 3.х версии и даже в 6.2 нет до сих пор нормального решения. Кто сталкивался и как побеждал? p.s. Тема на форуме Сенчи: https://www.sencha.com/forum/showthr...ue-to-combobox |
никогда в store не делал, чтобы idProperty было равно null
если нужно было использовать именно {id: null, value: 'Не выбрано'} для пустого значения комбобокса, то в store делал, например, idProperty: 'uuid' |
| Часовой пояс GMT +3, время: 17:41. |