2015-07-31 2 views
0

Я использую JQGrid 4.4.4. У меня есть столбец edittype = 'select'. Значение, отображаемое в строке сетки, является правильным. Но когда я редактирую строку, значение выпадающего/комбинированного поля устанавливается в неправильное значение. Вместо того, чтобы устанавливать его в значение, он устанавливает его на метку с одинаковым текстовым значением. Партии значений в раскрывающемся списке - {'1':'0','21':'1'}. Проблема заключается только в том, что метка совпадает с значением для другого элемента в параметрах.JQGrid - выпадающее значение не установлено правильно, когда edittype = 'select'

Здесь находится скрипка JS - http://jsfiddle.net/ksrini/ehj0nyLu/4/ И вот скриншот, который показывает проблему. enter image description here

Вопрос воспроизводится в 4.6. Форум JQGrid кажется закрытым, и я не могу поднять ошибку, если это действительно ошибка.

Любые предложения о том, как я могу это исправить или обойти это?

Спасибо,

ответ

0

демо-который вы используете, не воспроизвести проблему, потому как jqGrid 4,6 и старая версия 4.4.4 не поддерживает локального редактирования данных. Очень важно, что вы используете

formatter:'select' 

Только в случае jqGrid должны сохранить значения из выпадающего/комбо-бокс. В любом случае вы можете убедиться, что у free jqGrid 4.9.1 нет описанной проблемы (я использовал только URL-адреса, описанные в the wiki article): http://jsfiddle.net/OlegKi/ehj0nyLu/5/. Я могу представить, что некоторые ошибки существуют в старой версии 4.4.4, но ясно, что никто не исправит ошибки. Поэтому я бы рекомендовал вам обновить до бесплатного jqGrid. Это ядро ​​jqGrid, которое я продолжаю развивать после того, как Тони изменил лицензионное соглашение для jqGrid в версии 4.7.1. Его вилка имеет имя Guriddo jqGrid JS. Если вы найдете некоторые ошибки в бесплатном jqGrid, вы можете отправить the issue в GitHub или написать описание проблемы в stackoverflow. Версия последней версии может быть легко исправлена, но не версия версии 4.4.4.

ОБНОВЛЕНО: Исправлена ​​ошибка в последней версии бесплатного jqGrid на GitHub: http://jsfiddle.net/OlegKi/ehj0nyLu/6/. Фиксированный код будет включен в бесплатный jqGrid 4.9.2, который я опубликую сегодня.

Просто для информации я повторить то, что я писал ранее в комментарии: the line кода jqGrid 4.4.4, который вы используете, как и все последующие версии jqGrid и свободного jqGrid (менее 4.9.2) тесты для либо значения или текст во время выбора опции <select> во время редактирования. Правильно проверять только значение и выбрать опцию по тексту , только если опция не была найдена по значению. The fix выполняет изменения.

+0

Привет, Олег, я все еще вижу проблему. Даже в твоей скрипке. Когда вы редактируете строку для имени = Адам, каково значение, установленное в компании, выпадающее меню? Я вижу 1. Это должно быть 0, как в сетке. См. Скриншот в вопросе. – ksrini

+0

@ksrini: Извините, но вы используете 'editoptions: {значение: {'1': '0', '21': '1'}}', а входные данные содержат имя: "Adam", company: '1 ''и' name: "Eve", компания:' 21''. Таким образом, компания «Адам» должна быть показана как «0» («1»: «0»), а компания «Ева» - «1» («21 ':' 1»). Он делает «форматирование:« выберите ». – Oleg

+0

@ksrini: ОК! Теперь я вижу в конце вопрос. Я рассмотрю его больше и опубликую дополнительную информацию. – Oleg

0

Из комментариев Олега в его ответе кажется, что это ошибка в коде, пытающемся сохранить его обратно совместимым с программами, используя более старую версию JQGrid.

На данный момент я работал над этой проблемой, получив значение из выбранной строки в сетке и установив значение поля ввода выбора в форме в функции beforeShowForm.

beforeShowForm: function(form) { 
    ... 
    $("#<field-id-in-grid>", form).val(<value-from-selected-row>); 
    ... 
} 

Примечание: Я принял это (мой собственный) ответ для работы вокруг.Исправление упоминается в одном из комментариев Олега к его ответу. Если это можно сделать как ответ, я бы предпочел сделать это как принятый ответ.

Смежные вопросы