我正在使用jqGrid通過JSON數據在MySQL中維護數據庫。我想有一個過濾器重新加載網格 - 無效行與活動行。在我的數據網址php文件中,我連接到我的數據庫併爲其提供初始查詢,因此我只拖動列的位置,因此網格中已有的所有數據都是活動記錄。所以做一個搜索過濾器不會是解決方案,因爲它不會找到任何記錄,其中avail_ind = 'N'
。jqGrid自定義網格過濾器重新加載
我發現奧列格的demo類似於我在找的東西。我不需要他演示的垂直標題,但主要是包含複選框以過濾網格數據的「訂單狀態」框。
我主要關注的是,因爲我最初在網格中提取活動記錄,我如何向網格提供參數,其中avail_ind ='N'或'Y'顯示網格中所有可能的記錄,並以某種方式鏈接複選框或單選按鈕來選擇用戶想要查看哪種記錄。
謝謝你的幫助。
UPDATE
的jqGrid HTML/JavaScript代碼: 所有代碼不包括爲了簡潔
jQuery(document).ready(function(){
jQuery("#grid").jqGrid("initFontAwesome").jqGrid({
pager:'#gridpager',
url:'getDivisions.php',
datatype: "json",
mtype: 'GET',
height: 300,
width: 1000,
showerrors:true,
debug:true,
colNames:['Div', 'L1L2', 'L2', 'L1L3', 'L2L3', 'Exec Begin', 'Exec End', 'CSA', 'Area Id','Short Desc','Enabled'],
colModel:[
{name:'div_id',
index:'div_id',
width:30,
editable:true,
sortable:false,
resizable:false,
align:"center",
editoptions:{size:2,maxlength:2},
editrules:{required:true,number:true},
formoptions:{elmprefix:"(*)"}
},
{name:'l1l2_id',
index:'l1l2_id',
width:30,
editable:true,
resizable:false,
sortable:false,
//formatter: nullFormatter,
editoptions:{size:4,maxlength:4},
editrules:{required:true,number:true},
formoptions:{elmprefix:"(*)"}
},
{name:'l2_id',
index:'l2_id',
width:30,
editable:true,
resizable:false,
sortable:false,
align:"center",
editoptions:{size:2,maxlength:2},
editrules:{required:true,number:true},
formoptions:{elmprefix:"(*)"}
},
{name:'l1l3_id',
index:'l1l3_id',
width:30,
editable:true,
resizable:false,
sortable:false,
editoptions:{size:5,maxlength:6,readonly:'readonly'},
editrules:{number:true}
},
{name:'l2l3_id',
index:'l2l3_id',
width:30,
editable:true,
resizable:false,
sortable:false,
editoptions:{size:5,maxlength:4,readonly:'readonly'},
editrules:{number:true}
},
{name:'exec_beg',
index:'exec_beg',
width:60,
editable:true,
resizable:false,
sortable:false,
editoptions:{size:10,maxlength:8,readonly:'readonly'},
editrules:{number:true}
},
{name:'exec_end',
index:'exec_end',
width:50,
editable:true,
resizable:false,
sortable:false,
editoptions:{size:10,maxlength:8,readonly:'readonly'},
editrules:{number:true}
},
{name:'csa_id',
index:'csa_id',
width:35,
editable:true,
resizable:false,
sortable:false,
editoptions:{size:5,maxlength:5},
editrules:{required:true},
formoptions:{elmprefix:"(*)"}
},
{name:'area_id',
index:'area_id',
width:40,
editable:true,
resizable:false,
sortable:false,
align:"center",
editoptions:{size:2,maxlength:2},
editrules:{number:true},
formoptions:{elmprefix:"(*)"}
},
{name:'short_desc',
index:'short_desc',
width:60,
editable:true,
resizable:false,
sortable:false,
editoptions:{size:7,maxlength:10},
editrules:{required:true},
formoptions:{elmprefix:"(*)"}
},
{name:'avail_ind',
index:'avail_ind',
width:40,
editable:true,
resizable:false,
sortable:false,
align:"center",
edittype:"select",
editoptions:{value:"Y:Y;N:N"}}
],
viewrecords: true,
sortorder: "asc",
sortname: "div_id",
caption:"Division Codes",
editurl:'editdivisions.php',
toppager:true,
recordtext:'',
hidegrid:false,
scroll:true,
rowNum:"10000"
}); //jQuery("#grid").jqGrid
GetDivisions.php代碼:檢索數據加載網格
<?php
$dbhost = "localhost";
$dbuser = "root";
$dbpass = "*********";
$dbname = "CodeTable";
$page = $_GET['page']; // get the requested page
$limit = $_GET['rows']; // get how many rows we want to have into the grid
$sidx = $_GET['sidx']; // get index row - i.e. user click to sort
$sord = $_GET['sord']; // get the direction
if(!$sidx) $sidx =1;
// connect to the database
$db = mysql_connect($dbhost, $dbuser, $dbpass) or die("Connection Error: " . mysql_error());
mysql_select_db($dbname) or die("Error conecting to db.");
$result = mysql_query('SELECT div_id, l1l2_id, l2_id, l1l3_id, l2l3_id, exec_beg, exec_end, csa_id, area_id, short_desc, avail_ind FROM divcodes where div_id <> " " and avail_ind = "Y" and active_ind="Y"');
$row = mysql_fetch_array($result,MYSQL_ASSOC);
$count = $row['count'];
if($count >0)
{
$total_pages = cell($count/$limit);
}
else
{
$total_pages = 0;
}
if ($page > $total_pages) $page=$total_pages;
$start = $limit*$page - $limit; // do not put $limit*($page - 1)
$SQL = 'SELECT div_id, l1l2_id, l2_id, l1l3_id, l2l3_id, exec_beg, exec_end, csa_id, area_id, short_desc, avail_ind FROM divcodes where div_id <> " " and avail_ind = "Y" and active_ind="Y"';
$result = mysql_query($SQL) or die("Couldn t execute query.".mysql_error());
$response->page = $page;
$response->total = $total_pages;
$response->records = $count;
$i=0;
while($row = mysql_fetch_array($result,MYSQL_ASSOC)) {
$response->rows[$i]['id']=$row[div_id];
$response->rows[$i]['cell']=array($row[div_id],$row[l1l2_id],$row[l2_id],$row[l1l2_id],$row[l2l3_id],$row[exec_beg],$row[exec_end],$row[csa_id],$row[area_id],$row[short_desc],$row[avail_ind]);
$i++;
}
echo json_encode($response);
?>
感謝您的回覆@Mark,我看到您建議不對代碼進行硬編碼,但請參閱我的更新以瞭解如何從數據庫中檢索JSON數據以加載網格。我只是不完全理解你的例子中的代碼。 – klm10
@ klm10對不起,但我不是一個PHP的人,但是你在建立你的查詢字符串的地方,根據jqGrid傳遞給你的服務器的情況使它動態化。特別是你可以動態地改變查詢中的'avail_ind =「Y」'部分。如果您不使用jqGrid格式化數據庫查詢,則可以使用'postData'參數讓服務器決定如何格式化數據庫查詢字符串。 – Mark
感謝您的意見 – klm10