2012-06-28 2 views
0

У меня есть трудное время, чтобы установить значение поля выбора в форме редактирования. Например, у меня установлен мой colModel.jqGrid - Установка значения выбора в форме редактирования

colModel:[ 
     {name:'communication_id', key: true, index:'communication_id', width:30},    
     {name:'communication_type_id', index:'communication_type_id', width:30}, 
     {name:'communication_type_select',index:'communication_type_select',hidden:true,width:150, editable:true,edittype:'select',formatter:'select',editrules: {edithidden:true}, 
            formoptions:{label:'Communication Type'}, 
            editoptions:{dataUrl:"working_data_url", 
             buildSelect: function(json){             
              var response = $.parseJSON(json); 

              var s = '<select>'; 

              $.each(response.results,function(i,com){ 
               s += ('<option value="' + com.communication_type_id + '">'+ com.communication_type_desc + '</option>'); 
              }); 


              return s + "</select>"; 


             },dataInit: function(elem){ 
              alert(temp); 
              //alert($('#com_table_communication_type_id').val()); 
              //$(elem).val($('#com_table_communication_type_id').val()); 
             }}}, 
     {name:'communication_send_dt', index:'communication_send_dt', width:150, sortable:true, sorttype: 'date', 
            firstsortorder: 'desc', datefmt:'m/d/Y', editable:true},           

          editoptions: {recreateForm:true}, 
          rowNum:10, 
          width:'100%', 
          rowList:[10,20,30], 
          pager: '#com_pager', 
          sortname: 'communication_send_dt', 
          viewrecords: true, 
          sortorder: "desc", 
          loadonce:true, 
          caption: "Communication", 
          jsonReader: { 
            repeatitems : false, 
            root: "results" 
          }, 
          height: '100%', 
          onSelectRow: function(communication_id){ 

           var comtype = $(this).getRowData(communication_id); 
           var temp = comtype['communication_type_id']; 

          } 
        }); 

        grid.jqGrid('navGrid','#com_pager',{edit:true,add:false,del:false}); 

При нажатии на кнопку редактирования он загружает выбора опций правильно, но у меня возникают проблемы, с которой выбирается один. Я хочу, чтобы значение из message_type_id загружалось в message_type_select, и я пробовал разные вещи, чтобы это произошло. В основном, если идентификатор в message_type_id равен 2, тогда я хочу, чтобы поле выбора в форме редактирования было установлено равным 2, когда загружается форма редактирования. Любая помощь по этому поводу?

Обновление 1: Я получил его в основном, работая с использованием beforeShowForm, но теперь у меня запуталась странная вещь. Когда у меня есть предупреждение в beforeShowForm, все работает, но когда его комментируют, он не работает! Спасибо за помощь @Oleg!

grid.jqGrid('navGrid','#com_pager',{edit:true,add:false,del:false}, 
          {closeOnEscape:true, recreateForm:true,beforeShowForm: function(formid){ 
           //alert("com type id = "+comidvar + " response id = "+comrespvar + " com form type id = "+comfrmtypevar); 
           $("#communication_type_select", formid).attr("value",comidvar); 
           $("#form_response_select", formid).attr("value",comrespvar); 
           $("#form_type_select", formid).attr("value", comfrmtypevar); 
          }}, 
+0

К вашим последним изменениям: выбор из '' communication_type_select'' будет выполняться асинхронно с момента выполнения 'beforeShowForm'. Поэтому вы должны поместить хотя бы часть кода 'beforeShowForm', которая использует' '#communication_type_select'' в' buildSelect'. – Oleg

+0

Вы всегда должны написать небольшой комментарий с @Oleg к моему ответу, чтобы сообщить вам, что вы изменили текст своего вопроса. Я случайно обнаружил ваши текущие изменения. – Oleg

ответ

0

Если я вас понимаю правильно, вы должны использовать ajaxSelectOptions вариант jqGrid с data собственности. Вы можете определить дополнительную опцию, такую ​​как communication_type_id, в data, значение которой вы можете вернуть, используя $("#list").jqGrid('getGridParam', 'selrow'), а затем getCell, чтобы получить значение от communication_type_id. См. the answer.

+0

спасибо за помощь. Я думаю, что время действий - это то, что меня пугает. Если я поставлю $ ("# communication_type_select", formid) .attr ("value", comidvar); line в beforeShowForm в setTimeout с задержкой 1000, он работает снова, но окно редактирования всплывает, а затем изменяется на правильное значение выбора после окончания таймаута. Есть ли лучший способ сделать это? Я действительно не понимал, что мне нужно будет переместить в buildSelect. – user1489283

+0

Кроме того, можно загрузить форму редактирования, заполнить выбор и установить правильную опцию выбора под некоторой загрузкой ... графикой или чем-то еще? – user1489283

+0

@ user1489283: Извините, я не уверен, что правильно вас понимаю. Вы хотите отображать некоторые графики во время загрузки выбранных или вы хотите отображать параметры в элементе, который содержит графику? – Oleg

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