Jqgrid edittype:select editoptions:不调用dataUrl来填充数据
Jqgrid edittype : select editoptions: dataUrl is not called to populate the data
我正在尝试使用 jqgrid 中的 select 框填充其中一列。下面是代码。
$(document).ready(function(){
$("#grid").jqGrid({
url: "./info",
datatype: "json",
mtype: "GET",
ajaxSelectOptions:{
type: "GET",
dataType: "json",
success: function (result) {
console.log(result);
}
},
colNames: ["DeptId", "DeptName", "StuId", "StuName", "StuDoj"],
colModel: [
{ name: "deptId", hidden:true },
{ name:"deptName", width:90, editable:true, edittype:'select', formatter:'select', editoptions:{
dataUrl:'./getDepts',
buildSelect: function(res){
console.log(res);
var s='<select id="dept" name="dept">'
$.each(res,function(idx,obj){
$('#dept')
.append($('<option>', { value : obj.deptId })
.text(obj.deptName));
});
return s+"</select>";
}
}},
{ name: "studentId", hidden:true },
{ name: "studentName", width: 80,editable:true },
{ name: "studentDoj",width: 90,editable:true }
],
pager: "#pager",
rowNum: 5,
rowList: [5, 10, 20],
sortname: "empId",
sortorder: "asc",
sortable:true,
viewrecords: true,
gridview: true,
caption: "MyGrid",
jsonReader: {
repeatitems: false,
id: "empId",
root: function (obj) { return obj; },
page: function (obj) { return 1; },
total: function (obj) { return 1; },
records: function (obj) { return obj.length; }
}
});
$("#grid").jqGrid('navGrid','#pager',{add:false,view:true,search:true});
})
在 colModel 'deptName' 的 editOptions 中,未调用 dataUrl 来填充 select 框。 jqgrid 使用 /info resturl 填充,它获取特定学生的 deptName。我希望 deptName 是 select 框类型,它的值应该与使用 info rest url
获取的 deptName 相同
它应该被调用,但是你的数据将被更新填充,因为你覆盖了 ajaxSelectOptions 中的成功函数。
为了得到响应,请评论成功功能或将其删除
$("#grid").jqGrid({
url: "./info",
datatype: "json",
mtype: "GET",
ajaxSelectOptions:{
type: "GET",
dataType: "json"
},
....
});
更新: 稍作改动,您的代码就可以正常工作。这是一个link to your code
请注意,格式化程序没有选项 dataUrl。仅在编辑中可用。
我正在尝试使用 jqgrid 中的 select 框填充其中一列。下面是代码。
$(document).ready(function(){
$("#grid").jqGrid({
url: "./info",
datatype: "json",
mtype: "GET",
ajaxSelectOptions:{
type: "GET",
dataType: "json",
success: function (result) {
console.log(result);
}
},
colNames: ["DeptId", "DeptName", "StuId", "StuName", "StuDoj"],
colModel: [
{ name: "deptId", hidden:true },
{ name:"deptName", width:90, editable:true, edittype:'select', formatter:'select', editoptions:{
dataUrl:'./getDepts',
buildSelect: function(res){
console.log(res);
var s='<select id="dept" name="dept">'
$.each(res,function(idx,obj){
$('#dept')
.append($('<option>', { value : obj.deptId })
.text(obj.deptName));
});
return s+"</select>";
}
}},
{ name: "studentId", hidden:true },
{ name: "studentName", width: 80,editable:true },
{ name: "studentDoj",width: 90,editable:true }
],
pager: "#pager",
rowNum: 5,
rowList: [5, 10, 20],
sortname: "empId",
sortorder: "asc",
sortable:true,
viewrecords: true,
gridview: true,
caption: "MyGrid",
jsonReader: {
repeatitems: false,
id: "empId",
root: function (obj) { return obj; },
page: function (obj) { return 1; },
total: function (obj) { return 1; },
records: function (obj) { return obj.length; }
}
});
$("#grid").jqGrid('navGrid','#pager',{add:false,view:true,search:true});
})
在 colModel 'deptName' 的 editOptions 中,未调用 dataUrl 来填充 select 框。 jqgrid 使用 /info resturl 填充,它获取特定学生的 deptName。我希望 deptName 是 select 框类型,它的值应该与使用 info rest url
获取的 deptName 相同它应该被调用,但是你的数据将被更新填充,因为你覆盖了 ajaxSelectOptions 中的成功函数。
为了得到响应,请评论成功功能或将其删除
$("#grid").jqGrid({
url: "./info",
datatype: "json",
mtype: "GET",
ajaxSelectOptions:{
type: "GET",
dataType: "json"
},
....
});
更新: 稍作改动,您的代码就可以正常工作。这是一个link to your code
请注意,格式化程序没有选项 dataUrl。仅在编辑中可用。