2015-08-25 4 views
0

Вот мой код jqGrid.Получить значения столбца jqgrid динамически

$("#grid").jqGrid({ 
         url:$url, 
         editurl:"serivce.php", 
         datatype: "json" , 
         mtype:"post", 
         colNames:["test"],        
         colModel:[ 
          {name:"test",index:"test", width:150,align:"center", editable:true, 
           edittype:"select", editoptions:{size:1, dataUrl:"../someurl.php?param1=parm } 
          }, 
         ], 
         rowNum:10, 
         rowList:[10,20,30], 
         add: { 
          top:30, 
          left:20 
         }, 
         edit:{ 
          top:30, 
          left:20 
         }, 
         jqModal: true, 
         pager: "#page", 
         sortname: "ID", 
         viewrecords: true, 
         sortorder: "ASC",        
         shrinkToFit: true, 
         height: "auto" 
        }); '; 



$("#grid").setGridParam({ondblClickRow: function(rowid) { 
           var rowData = jQuery("#grid").getRowData(rowid);          
            jQuery(this).jqGrid("editGridRow", rowid, 
            { closeAfterEdit:true, 
             beforeShowForm: function(form){ 
              // force the data value retrieve here 
             }, 
             afterSubmit:function() { $("#grid").jqGrid("setGridParam", {datatype: "json"}); 
                   return true; 
                   }  
            }); 
          } // end of ondblClickRow}); 
          }); ' ; 

Сервер PHP код dataUrl:

$values = getWorkingValues($param); 
echo '<select>'; 
foreach($values as $value){ 
    echo "<option value='" . $value . "'>" .$value . "</option>"; 
} 
echo "</select>"; 

Как заставить извлечь из значений в колонке "тест"?
, например, каждый раз, когда сетка открыта для редактирования?
Версия, которую я использую, - jqGrid 3.6. Благодаря

+0

Какая проблема Ваша проблема? Не будет ли вызов 'dataUrl'? Вам нужно отправить 'param1', который отличается в каждой строке? У вас есть некоторые проблемы с кешированием (например, 'dataUrl' будет загружен один раз и не будет извлекаться каждый раз)? Какая вилка jqGrid ([free jqGrid] (https://github.com/free-jqgrid/jqGrid), [Guriddo jqGrid JS] (http://guriddo.net/?page_id=103334) или старый jqGrid в версии < = 4.7) и в какой версии вы используете? Какой режим редактирования вы используете (редактирование формы, встроенное редактирование или редактирование ячейки)? – Oleg

+0

Спасибо, Олег. Моя проблема в том, что значения кэшируются. Я хочу заставить обновить значения dataUrl, когда editGridRow. Я использую редактирование формы. – user2430607

+0

** Какую версию jqGrid вы используете? ** Где код, в который вы запускаете 'editGridRow'? Какие опции 'editGridRow' вы используете? Какой веб-браузер вы использовали для тестов? Вы устанавливаете и кешируете опцию ('Cache-Control') в HTTP-заголовке ответа' dataUrl' (см. Код сервера). Вы должны нажать на ссылку «изменить» ниже вашего вопроса и изменить/добавить текст с дополнительной информацией. – Oleg

ответ

1

Вы можете попробовать добавить recreateForm: true опцию в настройках editGridRow (около closeAfterEdit:true).

Я бы настоятельно рекомендовал вам обновить jqGrid. jqGrid 3.6 7 лет, что действительно очень важно в веб-разработке. Один из них был в то время, когда IE4 и IE5 были только опубликованы. Теперь нет веб-браузеров. Поэтому вы пытаетесь использовать версию из каменного века веб-разработки. Вы не сможете найти даже документацию о старой версии. Я бы порекомендовал вам обновить до free jqGrid 4.9.2, которое вы можете скачать с GitHub, NuGet, npm или просто использовать непосредственно с CDN (см. the wiki article). Кстати, значение опции recreateForm отличается в разных версиях jqGrid. Если вы будете использовать бесплатный jqGrid, вам не нужно использовать опцию recreateForm: true, чтобы решить эту проблему.

A также порекомендует вам дополнительно установить HTTP-заголовок Cache-Control: private, max-age=0 в ответе сервера dataUrl. В этом случае вы будете уверены, что предыдущий запрос не будет кэшироваться на стороне клиента, и веб-браузер будет выполнять соответствующий запрос Ajax каждый раз.

+0

Добавив recreateFrom: true разрешил мою проблему. Благодарю. – user2430607

+0

@ user2430607: Добро пожаловать! – Oleg

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

  • Нет связанных вопросов^_^