动态检索jqgrid的列值
Retrieve the column values of jqgrid dynamically
这是我的 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});
}); ' ;
dataUrl 的服务器 php 代码:
$values = getWorkingValues($param);
echo '<select>';
foreach($values as $value){
echo "<option value='" . $value . "'>" .$value . "</option>";
}
echo "</select>";
如何强制检索 "test" 列中的值?
例如,每次打开网格进行编辑时?
我使用的版本是jqGrid 3.6。
谢谢
您可以尝试在 editGridRow
的选项中添加 recreateForm: true
选项(靠近 closeAfterEdit:true
)。
我强烈建议您更新 jqGrid。 jqGrid 3.6 已经 7 岁了,它在 Web 开发方面确实非常重要。一个在 IE4 和 IE5 刚刚发布的时候。现在不支持网络浏览器。因此,您尝试使用 Web 开发石器时代的版本。您甚至无法找到有关旧版本的文档。我建议您更新到 free jqGrid 4.9.2 which you can download from GitHub, NuGet, npm or just use directly from CDN (see the wiki article)。顺便说一句 recreateForm
选项的含义在不同版本的 jqGrid 中是不同的。如果您使用免费的 jqGrid,那么您将不需要使用 recreateForm: true
选项来解决问题。
A 建议您在 dataUrl
的服务器响应中另外设置 Cache-Control: private, max-age=0
HTTP header。通过这种方式,您可以确保先前的请求不会缓存在客户端,并且网络浏览器每次都会发出相应的 Ajax 请求。
这是我的 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});
}); ' ;
dataUrl 的服务器 php 代码:
$values = getWorkingValues($param);
echo '<select>';
foreach($values as $value){
echo "<option value='" . $value . "'>" .$value . "</option>";
}
echo "</select>";
如何强制检索 "test" 列中的值?
例如,每次打开网格进行编辑时?
我使用的版本是jqGrid 3.6。
谢谢
您可以尝试在 editGridRow
的选项中添加 recreateForm: true
选项(靠近 closeAfterEdit:true
)。
我强烈建议您更新 jqGrid。 jqGrid 3.6 已经 7 岁了,它在 Web 开发方面确实非常重要。一个在 IE4 和 IE5 刚刚发布的时候。现在不支持网络浏览器。因此,您尝试使用 Web 开发石器时代的版本。您甚至无法找到有关旧版本的文档。我建议您更新到 free jqGrid 4.9.2 which you can download from GitHub, NuGet, npm or just use directly from CDN (see the wiki article)。顺便说一句 recreateForm
选项的含义在不同版本的 jqGrid 中是不同的。如果您使用免费的 jqGrid,那么您将不需要使用 recreateForm: true
选项来解决问题。
A 建议您在 dataUrl
的服务器响应中另外设置 Cache-Control: private, max-age=0
HTTP header。通过这种方式,您可以确保先前的请求不会缓存在客户端,并且网络浏览器每次都会发出相应的 Ajax 请求。