place_id의 custom_value는 내가 먼저 클릭하는 행으로 설정됩니다. 연속 된 클릭 행은 모두 실제 값과 상관없이 동일한 값을 사용합니다. 왜?jqgrid - edittype의 custom_value를 설정합니다. 'custom'
예 :
place_id foo_name bar_value
10 blah abc
11 blah2 fgr
10의 place_id로 행을 클릭하고 "편집"및 place_id 값에 대해 10
있을 것이다 표시되는 형식을 클릭합니다. 변경 한 다음 저장하고 다음 행을 클릭하십시오. 다른 모든 값은 올바르지 만 양식은 여전히 10
의 place_id를 갖습니다.
내 코드 :
열 place_id은 다음과 같습니다
{name:'place_id', index:'place_id', editable: true, edittype:'custom',
editoptions: { custom_element:myelem,custom_value:myval }}
myval
기능은 다음과 같습니다
function myval(elem){
return elem.val();
}
내가해야 할 것은 편집중인 행의 올바른 place_id Firebug의 elem
객체를 살펴봤을 때 항상 첫 번째로 클릭 한 행의 값이 있다는 것을 알았지 만 이유를 이해하지 못하거나 올바른 값을 어디서 얻을 수 있는지도 알지 못합니다. 모든 제안을 (나는 jqgrid 포럼에 물어 봤지만 아무것도 그것의 stackoverflow 돌고있어) 와서 감사했습니다.
* 편집 : edittype:'custom'
대신 edittype:'text'
을 사용하면 올바른 값이 표시되고 전달되지만 해당 열은 편집 가능하며 표시 만 가능하지만 편집 할 수는 없습니다.
전체 코드 :
jQuery(document).ready(function(){
jQuery("#list").jqGrid({
url:'/foo/bar/results',
datatype: 'json',
mtype: 'POST',
colNames:['Place ID', 'Site ID', 'Site Name', 'API ID', 'M Type'],
colModel :[
{name:'place_id', index:'place_id', key: true, sorttype:'integer',
width:70, editable: true, edittype:'custom',
editoptions: {custom_element:myelem,custom_value:myval }},
{name:'site_id', index:'site_id', sorttype:'integer', width:70,
editable: true, edittype: 'select', editrule: {required: true},
editoptions:{value:getSites(), size:30}},
{name:'site_name', index:'site_name', width:150, editable: false,
editrule: {required: true}, editoptions: {size:30}},
{name:'api_id', index:'api_id', sorttype:'integer', width:75,
editable: true, edittype: 'text', editrules: {required: true},
editoptions:{size:30}},
{name:'m_type', index:'m_type', width:150, editable: true,
edittype: 'select', editrules: {required: true},
editoptions:{value:{'one':'one','two':'two','three':'three',
'four':'four'},size:30}}
],
editurl:'/foo/bar/editinfo',
height: 'auto',
width: 'auto',
pager: '#pager',
viewrecords: true,
loadonce: true,
rowNum:20,
rowList:[20,40,60,80,100],
caption: 'Meter Listing'
});
// Edit functionality
$("#editfields").click(function(){
var gr = jQuery("#list").jqGrid('getGridParam','selrow');
if(gr != null) {
jQuery('#list').setGridParam({datatype:'json'});
jQuery("#list").jqGrid('editGridRow',gr,
{editCaption: 'Edit Place Details',height:550,
closeAfterEdit:true,width:600,reloadAfterSubmit:true});
} else {
alert("Please select a row");
}
});
});
function myelem(value,options){
return $('<input type="text" value="'+value+'" disabled="disabled"/>');
}
function myval(elem){
return elem.val();
}
EDIT2 :
getSites :
function getSites(){
<?php
$sites = "0:Select";
foreach ($this->sites as $k => $v){
$sites = $sites . ";" . $v['site_id'] . ":" . $v['site_name'];
}
?>
return "<?= $sites ?>";
}
'myelem' 코드도 게시 할 수 있습니까? – Oleg
이 추가되었지만 ... 'value'가 어디서 왔는지는 모르겠지만 .... 흠과'options'는 사용되지 않습니다. – Stuart
'getSites' 함수의 코드를 게시 할 수 있습니까? – Oleg