2012-04-11 3 views
0

Я использую inlineNav (успешно из-за помощи здесь!).jqGrid dataUrl не загружается при загрузке сетки

Теперь, используя dataUrl в инструкции select, я не понимаю поведения.

Параметры выбора не загружаются при загрузке сетки. Запрос HTML-запроса не создается до тех пор, пока не будет нажата ни редактирование, ни добавление записи.

Могу ли я загрузить его, как только загрузится сетка?

$("#navgrid").jqGrid({ 
    sortable: true, 
    rownumbers: true, 
    url: 'cms.dbw?action=ajaxgrid&sessionid=3d70a780-d6ec-102f-bd56-0015171f0bcc&subaction=jq&tableid=carepln', 
    editurl: 'cms.dbw', 
    datatype: 'json', 
    mtype: 'GET', 
    pager: '#navgrid_bottompager', 
    rowNum: 10, 
    rowList: [10,50,100], 
    width: 750, 
    height: '100%', 
    shrinkToFit: false, 
    toolbar: [false,'top'], 
    sortname: 'id', 
    sortorder: 'asc', 
    viewrecords: true, 
    gridview: true, 
    altRows: false, 
    toppager: true, 
    caption: 'Care Plan Detail', 
    colNames: ['ID','Act','Resident Code','Care Code'], 
    colModel: [ 
     {name:'id',index:'id',width:50,align:'center',search:false,key:true,hidden:true}, 
     {name:'active',width:30,align:'center',editable:true,edittype:'checkbox',editoptions: {value:'Y:N'},formatoptions:{disabled:false,value:"Y:N"}}, 
     {name:'resid',align:'left',editable:true,width:70}, 
     {name:'classid',align:'left',editable:true,edittype: 'select',editoptions: { dataUrl: 'cms.dbw?action=ajaxgrid&sessionid=3d70a780-d6ec-102f-bd56-0015171f0bcc&subaction=jqsubtable&tableid=careserv&field1=classid&field2=description'} ,width:70} 
    ] 
}); 

{ "страница": 1, "запись": 4024, "всего": 403, "строка": [{ "ID": "1", "клетка": [ "1" , "Y", "100243", "22020"]}, { "идентификатор": "2", "клетка": [ "2", "Y", "100220", "22020"]}, { "идентификатор ":" 3" , "клетка": [ "3", "Y", "100193", "22020"]}, { "ID": "4", "клетка": [ "4", "Y" , "100082", "22020"]}, { "идентификатор": "5", "клетка": [ "5", "Y", "100068", "22020"]}, { "идентификатор": "6 », "клетка": [ "6", "Y", "100241", "22020"]}, { "идентификатор": "7", "клетка": [ "7", "Y", "100215" клетка "9", ": "22020"]}, { "идентификатор": "8", "клетка": [ "8", "Y", "100059", "22020"]}, { "идентификатор" ": [" 9" , "Y", "100240", "22020"]}, { "идентификатор": "10", "клетка": [ "10", "Y", "100009", "22020" ]}]}

dataUrl не разрешает пока не начнется редактирование. И не отображается после редактирования.

ответ

0

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

Если вам нужно загрузить данные только один раз, вы не можете использовать dataUrl. Вместо этого вы можете сделать отдельный вызов Ajax для установки editoptions.value по отношению к setGridParam.

+0

Я понимаю преимущества, которые вы указали, и я считаю, что jqGrid - исключительный инструмент. –

+0

Я понимаю преимущества, которые вы указали, и я считаю, что jqGrid - исключительный инструмент. Я надеялся, что это будет сделано, как действовать как истинное поле выбора в самой сетке, и ajax вносит параметры с сервера - и делает это, как только я отредактирую или добавлю. Но отображение данных . –

+0

@GregNeid: Извините, вы хотите использовать select в [inline editing] (http://www.trirand.com/jqgridwiki/doku.php?id=wiki:inline_editing)? В случае, если вы действительно можете использовать 'dataUrl'. Какая текущая проблема у вас есть? – Oleg

0

У меня такая же проблема - у меня есть внешний ключ в моих данных, и я хочу, чтобы сетка отображала какое-то понятное значение для этого столбца, а не какой-то случайный ключ, который пользователь не знает. Как и вы, я использовал dataUrl для получения параметров и хотел бы использовать formatter:'select', чтобы отображать эти значения даже при не редактировании строки. Проблема в том, что этот запрос ajax происходит только тогда, когда строка редактируется, поэтому она не знает значения до тех пор, пока не произойдет редактирование. Единственное решение, которое я нашел, - это просто выполнить ручную ajax-загрузку этих значений перед настройкой сетки и использовать эти значения для установки editoptions: {value: ... }, как и для одного из других столбцов. Это единственный способ, которым формат сетки может знать эти значения перед редактированием.

This answer содержит пример загрузки опций перед опорой, но не содержит часть formatter:'select' - вот в документации на это link.

+0

@ ZacharyOlsen: «Пароль» также не разрешается перед редактированием. Он отображает пароль до тех пор, пока вы его не отредактируете, затем он станет ************. –

+0

Это немного расстраивает - я бы предположил, что для него существует тип редактирования, для него будет тип форматирования. Нашел это обсуждение, которое расширяет его, чтобы обрабатывать этот случай как работу: http://www.trirand.com/blog/?page_id=393/help/how-to-hide-password-characters-in-column-formatterpassword- это-игнорируется / –

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