jqGrid 如何根据状态数据动态填充选项列表?
How does jqGrid dynamically populate the list of options based on status data?
我目前正在使用 jQgrid 绘制列表,并且正在通过 Ajax 检索数据。我正在正常取回列表,没有任何问题。
我的问题是我必须根据我得到的状态值动态填充选项列表。
调用数据的地方:
$(function(){
search_provider();
// grid resize
$(window).on('resize.jqGrid', function() {
$("#requestList").jqGrid('setGridWidth', $(".grid-cover").width());
})
});
function search_provider() {
var queryData = $("#searchList").serialize();
$.ajax({
url : "/v1/point/admin/provider/game_provider_list",
type : "GET",
dataType : "json",
data: queryData,
success : function(result) {
$("#resultLength").text(result.jqgrid_data.length);
if(result.jqgrid_data.length == 0){
noData();
}else{
$('#grid-cover').show();
$('#no-data').hide();
setRequestList(result.jqgrid_data)
}
}
})
}
需要动态填充的地方:
{
name : 'approval_status',
index : 'approval_status',
align : 'center',
editable : true,
edittype : 'select',
formatter : 'select',
editoptions : {
value : "0:Unauthorized;1:Approval;2:Hold;3:Denial of approval;4:Reclamation",
dataEvents : [{
type : 'change',
fn : function(e) {
...
}
}]
}
}
现在显示所有列表。
当approval_status
的值为'0'时return"0:Unauthorized;1:Approval;2:Hold;3:Denial of approval"
当approval_status
的值为'1'时return"1:Approval;4:Reclamation"
当approval_status
的值为'2'时return"1:Approval;2:Hold;3:Denial of approval"
当approval_status
的值为'3'时return"1:Approval;2:Hold;3:Denial of approval"
我要改成如上。你如何解决这个问题?
指定从DB导入的数据变量同名,通过状态值注册条件语句,获取符合条件的DB数据。并绘制一个JQgrid来拟合数据。
MyBatis.xml
select id="list" parameterType="hashmap" resultType="hashmap">
<choose>
<when test='approval_status == "0"'>
SELECT
seq_no AS col1,
nick_name AS col2,
...
FROM DB_DB
<when test='approval_status == "1"'>
SELECT
seq_no AS col1,
............
</choose>
JQgrid.js
function setRequestList(jqgrid_data,status){
var title = [];
if(status == '0'){
title = ['No', 'nick',... ];
}else if(status == '1'){
title = ['No', 'name', ... ];
}
var colmodel = [];
$("#requestList").jqGrid("GridUnload");
jQuery("#requestList").jqGrid({
data : jqgrid_data,
datatype : "local",
height : 'auto',
colNames : title,
colModel : [{
name : 'col1',
index : 'seq',
align : 'center',
sortable : false
}
...
我目前正在使用 jQgrid 绘制列表,并且正在通过 Ajax 检索数据。我正在正常取回列表,没有任何问题。
我的问题是我必须根据我得到的状态值动态填充选项列表。
调用数据的地方:
$(function(){
search_provider();
// grid resize
$(window).on('resize.jqGrid', function() {
$("#requestList").jqGrid('setGridWidth', $(".grid-cover").width());
})
});
function search_provider() {
var queryData = $("#searchList").serialize();
$.ajax({
url : "/v1/point/admin/provider/game_provider_list",
type : "GET",
dataType : "json",
data: queryData,
success : function(result) {
$("#resultLength").text(result.jqgrid_data.length);
if(result.jqgrid_data.length == 0){
noData();
}else{
$('#grid-cover').show();
$('#no-data').hide();
setRequestList(result.jqgrid_data)
}
}
})
}
需要动态填充的地方:
{
name : 'approval_status',
index : 'approval_status',
align : 'center',
editable : true,
edittype : 'select',
formatter : 'select',
editoptions : {
value : "0:Unauthorized;1:Approval;2:Hold;3:Denial of approval;4:Reclamation",
dataEvents : [{
type : 'change',
fn : function(e) {
...
}
}]
}
}
现在显示所有列表。
当approval_status
的值为'0'时return"0:Unauthorized;1:Approval;2:Hold;3:Denial of approval"
当approval_status
的值为'1'时return"1:Approval;4:Reclamation"
当approval_status
的值为'2'时return"1:Approval;2:Hold;3:Denial of approval"
当approval_status
的值为'3'时return"1:Approval;2:Hold;3:Denial of approval"
我要改成如上。你如何解决这个问题?
指定从DB导入的数据变量同名,通过状态值注册条件语句,获取符合条件的DB数据。并绘制一个JQgrid来拟合数据。
MyBatis.xml
select id="list" parameterType="hashmap" resultType="hashmap">
<choose>
<when test='approval_status == "0"'>
SELECT
seq_no AS col1,
nick_name AS col2,
...
FROM DB_DB
<when test='approval_status == "1"'>
SELECT
seq_no AS col1,
............
</choose>
JQgrid.js
function setRequestList(jqgrid_data,status){
var title = [];
if(status == '0'){
title = ['No', 'nick',... ];
}else if(status == '1'){
title = ['No', 'name', ... ];
}
var colmodel = [];
$("#requestList").jqGrid("GridUnload");
jQuery("#requestList").jqGrid({
data : jqgrid_data,
datatype : "local",
height : 'auto',
colNames : title,
colModel : [{
name : 'col1',
index : 'seq',
align : 'center',
sortable : false
}
...