Добавить строку с 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, время: 10:40. |