【发布时间】:2010-08-05 15:51:56
【问题描述】:
place_id 的 custom_value 设置为我首先单击的那一行。随后单击的行都将使用相同的值,而不管它们的实际值如何。为什么?
示例:
place_id foo_name bar_value
10 blah abc
11 blah2 fgr
单击 place_id 为 10 的行,然后单击“编辑”,出现的表单将为 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();
}
我需要将 myval 设置为正在编辑的行的正确 place_id。我查看了 Firebug 中的 elem 对象,发现它始终具有第一次单击的那一行的值,但我不明白为什么,也看不到可以从哪里获取正确的值。任何建议都表示赞赏(我尝试在 jqgrid 论坛上提问,但没有任何结果,所以我转向 stackoverflow)。
*编辑:如果我使用 edittype:'text' 而不是 edittype:'custom' 我会显示并传递正确的值,但是该列是可编辑的,它应该只可见但不可编辑。
完整代码:
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:
获取站点:
function getSites(){
<?php
$sites = "0:Select";
foreach ($this->sites as $k => $v){
$sites = $sites . ";" . $v['site_id'] . ":" . $v['site_name'];
}
?>
return "<?= $sites ?>";
}
【问题讨论】:
-
你能把
myelem函数的代码也发一下吗? -
添加了...虽然我真的不知道
value来自哪里...嗯,甚至没有使用options。 -
你能发布
getSites函数的代码吗? -
我看到了选项的来源......该函数使用 call() 来获取它需要的东西。现在,它为什么要抓住“错误”的东西?
-
我已添加
getSites。
标签: javascript jquery jqgrid