Я пытался Эрик Хиндс jQuery UI MultiSelect Widget вместе с jqGrid 3.4.1 и не смог увидеть ни одной проблемы, которую вы описали.Я рекомендую вам сравнить вашу демо с моей, чтобы найти различия.
Одна плохая вещь, которую я вижу в вашем коде, это то, что вы устанавливаете атрибут id="CaratteristicheCamera"
для <select>
, который вы генерируете в buildSelect
.Вы должны просто использовать <select>
без каких-либо дополнительных атрибутов.JqGrid будет устанавливать все атрибуты, такие как id
или multiple="multiple"
.
В демоверсии Я использовал editurl: 'test.asmx/dummy'
, которых нет на сервере.Таким образом, вы видите сообщение об ошибке вроде
после выбора и отправки выбранных элементов
Тем не менее, можно видеть с уважениемтаких инструментов, как Fiddler , Firebug или инструментов разработчика IE или Chrome (см. HTTP-трафик на вкладке «Сеть»), которые демо-версия публикует как
{"name":"test8","closed":"No","ship_via":"FE,TN","oper":"edit","id":"8"}
до http://www.ok-soft-gmbh.com/jqGrid/test.asmx/dummy
.Таким образом, значения "FE,TN"
выбранных элементов FedEx, TNT
будут отправлены, как ожидается.В вашем случае CaratteristicheCamera
параметр SaveRoom
должен быть инициализирован в список выбранных значений через запятую.Я надеюсь, что вы найдете проблему в своем коде, если вы сравните мое демо с молодежью.
Другая небольшая проблема в выложенном вами коде заключается в том, что вы выполняете сериализацию в JSON вручную в WebMethod
GetRoomFeatureList
ивозвращает string
.Таким образом, строка будет сериализована в JSON дважды .Так что вы используете
var retValue = $.parseJSON(data);
var response = $.parseJSON(retValue.d);
Правильно будет вернуть что-то вроде List<Room>
.ASP.NET будет сериализовать его автоматически.Если вы используете опцию jqGrid
ajaxSelectOptions: {
contentType: 'application/json; charset=utf-8',
dataType: "json"
}
, то data
in buildSelect
вообще не понадобится для анализа.Вы можете напрямую использовать data.d[i].Id
и data.d[i].Descrizione
в цикле.Я написал вам об этой же проблеме в другом ответе на ваш старый вопрос.