2012-03-09 4 views
4

Я использую JSON для извлечения значений для элемента select.
мой colModel является:jqGrid editotype: 'select, formatter:' select 'not working

{ name: 'position', editable: true, edittype: "select", formatter:'select', 
    editoptions: { 
     value: function() { 
      var positions; 
      $.ajax({ 
       url: "orthofixServices.asmx/GetPositionsList", 
       data: "{}", 
       async: false, 
       success: function(data) { 
        positions = data.d; 
       }, 
       error: function(XMLHttpRequest, textStatus, errorThrown) { 
        alert(textStatus); 
       } 
      }); 
      return positions; 
     } 

это ответ:

{ 
    "d": { 
     "21": "CAP Pos 1", 
     "41": "CAP Pos 2", 
     "42": "CAP Pos 3" 
    } 
} 

И строка отправляется обратно с сервера, чтобы связать сетки

{ 
    "d": { 
     "page": 1, 
     "total": 1, 
     "records": 1, 
     "rows": [ 
      { 
       "id": 9, 
       "name": "Julio", 
       "nameid": 0, 
       "title": "Doctor", 
       "npi": "123-123", 
       "license": "licabc", 
       "licstate": "NV", 
       "position": "41", 
       "us": false, 
       "hrate": 0, 
       "rrate": 0 
      } 
     ] 
    } 
} 

"позиция" является поле из строки, которая подает элемент select. После сохранения строки на сетке ничего не отображается. Зачем? Должен ли я сохранить ключ от выбора в качестве Int или как String. Это имеет значение? Я пробовал оба способа, чтобы я никогда не мог отображать что-либо в сетке для элемента select. Он должен показать: "CAP Pos 42"

ответ

1

Я бы рекомендовал вам использовать dataUrl и buildSelect свойствах editoptions. Кроме того, вам нужно будет установить некоторые свойства опции ajaxSelectOptions jqGrid.

См. here, here и here для примеров использования.

+0

Я сделал именно то, что вы показываете на примере третьего. Я получаю результаты из базы данных, и список заполняется. Если я выйду из форматирования; «select» после сохранения ничего не отображается в сетке, если я удалю это ssetting, он показывает ключ, а не значение ... Я сохраняю ключ в базе данных, я надеюсь, что так ... пожалуйста, совет –

+0

I должен сказать, что ваш пример показывает только одно и то же значение для «ключа» и «текста» для выбора. Я изменил способ создания выборки, поместив " Есть ли что-то другое, чтобы быть другим? –

+0

@ManuelValle: Вы должны быть очень осторожны, если хотите использовать select с другими значениями в качестве текста опции. Будет важно, как вы заполняете сетку и **, когда ** вы устанавливаете 'значение'. Например, вы можете расширить данные, возвращаемые с сервера во время заполнения сетки, с ответом 'GetPositionsList'. Внутри 'beforeProcessing' вы можете изменить' editoptions.value'. Если вы используете редактирование, вам нужно будет сделать дополнительную дополнительную настройку для отправки * значения *, а не текста выбранной опции. Поэтому все нужно подробно изучить, и полный код, который вы используете, должен видеть. – Oleg

1

Простой Печальный факт состоит в том, что

formatter:'select', editoptions: { value: function() { ... 

не реализуется jqGrid. Исходный код для $.unformat.select просто не обрабатывает этот случай. Просто преобразуйте данные в массив и передайте его функции через value, чтобы получить тот же эффект.