這裏不用我多說Jqgrid怎麼好,通過下圖給大家演示一下:
下面說一說如何輕鬆使用它:
1.首先需要下載jqgrid的相關包:http://www.trirand.com/blog/?page_id=6(根據需要自行下載)
2.然後需要下載jqgrid皮膚文件:可以用jquery-ui,jqgrid本身支持jquery-ui,下載地址:http://jqueryui.com/themeroller/(選擇一個喜歡的皮膚下載)。
3.在頁面中引入相關文件,一般css兩個分別是:
ui.jqgrid.css
jquery-ui.css
,js四個:
jquery-1.7.2.min.js
jquery.jqGrid.min.js
jquery-ui.js
grid.locale-cn.js
如果覺得jquery-ui 的主題都不適合你,可以下別的主題也行,只是替換兩個文件
jquery-ui.css
jquery-ui.js
比如這裏可以應用bootstrap的主題:
ui.jqgrid-bootstrap.css
bootstrap.min.js
所以的準備工作做好以後就可以進行編寫我們的jqgrid了:
下面是我的一個demo案例:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JCompare</title>
<link rel="stylesheet" type="text/css" href="jqgrid/css/ui.jqgrid.css">
<link rel="stylesheet" type="text/css" href="jqgrid/jquery.ui/jquery-ui.css">
<script type="text/javascript" src="jqgrid/js/jquery-1.7.2.min.js"></script>
<script type="text/javascript" src="jqgrid/js/i18n/grid.locale-cn.js"></script>
<script type="text/javascript" src="jqgrid/js/jquery.jqGrid.min.js"></script>
<script type="text/javascript" src="jqgrid/jquery.ui/jquery-ui.js"></script>
</head>
<body>
<table id="list"></table>
</body>
</html>
<script type="text/javascript">
$("#list").jqGrid({
url:'server.php?q=2',//請求數據的地址
datatype: "json",
colNames:['Id','姓名', '年齡'],
//jqgrid主要通過下面的索引信息與後臺傳過來的值對應
colModel:[
{name:'id',index:'id', width:55},
{name:'name',index:'invdate', width:90},
{name:'age',index:'name', width:100}
],
caption:"我是jqgrid的標題",
});
</script>
上面是一個最基本的jqgrid數據顯示,接下來是在這個基礎上增加一些附加功能:
1.分頁功能信息顯示:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JCompare</title>
<link rel="stylesheet" type="text/css" href="jqgrid/css/ui.jqgrid.css">
<link rel="stylesheet" type="text/css" href="jqgrid/jquery.ui/jquery-ui.css">
<script type="text/javascript" src="jqgrid/js/jquery-1.7.2.min.js"></script>
<script type="text/javascript" src="jqgrid/js/i18n/grid.locale-cn.js"></script>
<script type="text/javascript" src="jqgrid/js/jquery.jqGrid.min.js"></script>
<script type="text/javascript" src="jqgrid/jquery.ui/jquery-ui.js"></script>
</head>
<body>
<table id="list"></table>
<span style="background-color: rgb(204, 204, 204);"> <div id="pager"></div></span>
</body>
</html>
<script type="text/javascript">
$("#list").jqGrid({
url:'server.php?q=2',//請求數據的地址
datatype: "json",
colNames:['Id','姓名', '年齡'],
//jqgrid主要通過下面的索引信息與後臺傳過來的值對應
colModel:[
{name:'id',index:'id', width:55},
{name:'name',index:'invdate', width:90},
{name:'age',index:'name', width:100}
],
caption:"我是jqgrid的標題",
<span style="background-color: rgb(204, 204, 204);"> rowNum : 10,
rowList : [ 10, 20, 30 ],
pager : '#pager',
sortname : 'id',
recordpos : 'right',
height:300,
viewrecords : true</span>
});
</script>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JCompare</title>
<link rel="stylesheet" type="text/css" href="jqgrid/css/ui.jqgrid.css">
<link rel="stylesheet" type="text/css"<span style="white-space:pre"> </span>href="jqgrid/jquery.ui/jquery-ui.css">
<script type="text/javascript" src="jqgrid/js/jquery-1.7.2.min.js"></script>
<script type="text/javascript" src="jqgrid/js/i18n/grid.locale-cn.js"></script>
<script type="text/javascript" src="jqgrid/js/jquery.jqGrid.min.js"></script>
<script type="text/javascript" src="jqgrid/jquery.ui/jquery-ui.js"></script>
</head>
<body>
<span style="white-space:pre"> </span><table id="list"></table>
<span style="white-space:pre"> </span><div id="pager"></div>
</body>
<script type="text/javascript">
$("#list").jqGrid({
<span style="white-space:pre"> </span>url:'server.php?q=2',//請求數據的地址
<span style="white-space:pre"> </span>datatype: "json",
<span style="white-space:pre"> </span>colNames:['Id','姓名', '年齡'],
<span style="white-space:pre"> </span>//jqgrid主要通過下面的索引信息與後臺傳過來的值對應
<span style="white-space:pre"> </span>colModel:[
<span style="white-space:pre"> </span>{name:'id',index:'id', width:200},
<span style="white-space:pre"> </span>{name:'name',index:'invdate', width:200},
<span style="white-space:pre"> </span>{name:'age',index:'name', width:300}
<span style="white-space:pre"> </span>],
<span style="white-space:pre"> </span>caption:"我是jqgrid的標題",
rowNum : 10,
rowList : [ 10, 20, 30 ],
pager : '#pager',
sortname : 'id',
recordpos : 'right',
height:300,
viewrecords : true
});
$("#list").jqGrid('navGrid', '#pager', {
add : true,
del : true,
edit : true,
position : 'left',
});
</script>
</html>
<script type="text/javascript">
var openDialog4Adding = function() {
alert("add Demo");
};
var openDialog4Updating = function(rowid) { // (6) 接受選中行的id爲參數
alert("update Demo");
};
var openDialog4Deleting = function(rowid) { // (8) 接受選中行的id爲參數
alert("delete Demo");
};
$("#list").jqGrid({
url:'server.php?q=2',//請求數據的地址
datatype: "json",
colNames:['Id','姓名', '年齡'],
//jqgrid主要通過下面的索引信息與後臺傳過來的值對應
colModel:[
{name:'id',index:'id', width:200},
{name:'name',index:'invdate', width:200},
{name:'age',index:'name', width:300}
],
caption:"我是jqgrid的標題",
rowNum : 10,
rowList : [ 10, 20, 30 ],
pager : '#pager',
sortname : 'id',
recordpos : 'right',
height:300,
viewrecords : true
});
$("#list").jqGrid('navGrid', '#pager', {
add : true,
del : true,
edit : true,
position : 'left',
addfunc : openDialog4Adding, // (1) 點擊添加按鈕,則調用openDialog4Adding方法
editfunc : openDialog4Updating, // (2) 點擊編輯按鈕,則調用openDialog4Updating方法
delfunc : openDialog4Deleting, // (3) 點擊刪除按鈕,則調用openDialog4Deleting方法
alerttext : "請選擇需要操作的數據行!" // (4) 當未選中任何行而點擊編輯、刪除、查看按鈕時,彈出的提示信息
});
</script>
4.自定義按鈕+點擊彈出框
需要在html中加入下面代碼:
<div>
<button class="right-button02" onclick="openDialog4Adding()">添加</button>
<button class="right-button02" onclick="openDialog4Updating()">修改</button>
<button class="right-button02" onclick="openDialog4Deleting()">刪除</button>
</div>
<div id="consoleDlg">
<div id="formContainer">
<form id="consoleForm">
<input type="hidden" id="selectId" />
<table class="formTable">
<tr>
<th>
姓名:
</th>
<td>
<input type="text" class="textField" id="ename"
name="ename" />
</td>
</tr>
<tr>
<th id="thusergender">
性 別:
</th>
<td>
<input type="text" class="textField" id="esex"
name="esex" />
</td>
</tr>
<tr>
<th>
出生日期:
</th>
<td>
<input type="text" class="textField" id="birthday"
name="birthday" />
</td>
</tr>
<tr>
<th>
部門:
</th>
<td>
<input type="text" class="textField" id="department"
name="department" />
</td>
</tr>
<tr>
<th>
備註:
</th>
<td>
<input type="text" class="textField" id="eremark"
name="eremark" />
</td>
</tr>
</table>
</form>
</div>
</div>
然後再寫js代碼:
// 配置對話框
$("#consoleDlg").dialog({
autoOpen: false,
modal: true, // 設置對話框爲模態(modal)對話框
resizable: true,
width: 480,
buttons: { // 爲對話框添加按鈕
"取消": function() {$("#consoleDlg").dialog("close")},
"添加": addEmployee,
"保存": updateEmployee,
"刪除": deleteEmployee
}
});
var openDialog4Adding = function() {
var consoleDlg = $("#consoleDlg");
var dialogButtonPanel = consoleDlg.siblings(".ui-dialog-buttonpane");
consoleDlg.find("input").removeAttr("disabled").val("");
dialogButtonPanel.find("button:not(:contains('取消'))").hide();
dialogButtonPanel.find("button:contains('添加')").show();
consoleDlg.dialog("option", "title", "添加員工信息 ").dialog("open");
};
var openDialog4Updating = function() {
var consoleDlg = $("#consoleDlg");
var dialogButtonPanel = consoleDlg.siblings(".ui-dialog-buttonpane");
consoleDlg.find("input").removeAttr("disabled");
dialogButtonPanel.find("button:not(:contains('取消'))").hide();
dialogButtonPanel.find("button:contains('保存')").show();
consoleDlg.dialog("option", "title", "修改員工信息");
loadSelectedRowData();
}
var openDialog4Deleting = function() {
var consoleDlg = $("#consoleDlg");
var dialogButtonPanel = consoleDlg.siblings(".ui-dialog-buttonpane");
consoleDlg.find("input").attr("disabled", true);
dialogButtonPanel.find("button:not(:contains('取消'))").hide();
dialogButtonPanel.find("button:contains('刪除')").show();
consoleDlg.dialog("option", "title", "刪除員工");
loadSelectedRowData();
}
var loadSelectedRowData = function() {
var selectedRowId = $("#gridTable").jqGrid("getGridParam", "selrow");
if (!selectedRowId) {
hiAlert("請先選擇需要編輯的行!");
return false;
} else {
var params = {
"employee.eid" : selectedRowId
};
// 從Server讀取對應ID的JSON數據
$.ajax( {
url : "employee_find.action",
data : params,
dataType : "json",
cache : false,
error : function(textStatus, errorThrown) {
hiAlert("系統ajax交互錯誤: " + textStatus);
},
success : function(data, textStatus) {
// 如果讀取結果成功,則將信息載入到對話框中
var rowData = data.person;
var consoleDlg = $("#consoleDlg");
consoleDlg.find("#selectId").val(rowData.id);
consoleDlg.find("#ename").val(rowData.ename);
consoleDlg.find("#esex").val(rowData.esex);
consoleDlg.find("#birthday").val(rowData.birthday);
consoleDlg.find("#department").val(rowData.department);
consoleDlg.find("#eremark").val(rowData.eremark);
// 根據新載入的數據將表格中的對應數據行一併更新一下
var dataRow = {
id : data.employee.eid, // 從Server端得到系統分配的id
ename :ename,
esex : esex,
birthday: birthday,
department: department,
eremark:eremark
};
$("#gridTable").jqGrid("setRowData", data.employee.eid, dataRow);
// 打開對話框
consoleDlg.dialog("open");
}
});
}
};
//數據更新
function updateEmployee() {
var consoleDlg = $("#consoleDlg");
var eid = $.trim(consoleDlg.find("#selectId").val());
var eanme = $.trim(consoleDlg.find("#eanme").val());
var esex = $.trim(consoleDlg.find("#esex").val());
var birthday = $.trim(consoleDlg.find("#birthday").val());
var department = $.trim(consoleDlg.find("#department").val());
var eremark = $.trim(consoleDlg.find("#eremark").val());
var params = {
"employee.eid" : eid,
"employee.ename" : ename,
"employee.esex" : esex,
"employee.birthday" : birthday,
"employee.department" : department,
"employee.eremark" : eremark
};
var actionUrl = "employee_update.action";
$.ajax( {
url : actionUrl,
data : params,
dataType : "json",
cache : false,
error : function(textStatus, errorThrown) {
alert("系統ajax交互錯誤: " + textStatus);
},
success : function(data, textStatus) {
if (data.ajaxResult == "success") {
var dataRow = {
id : data.employee.eid, // 從Server端得到系統分配的id
ename :ename,
esex : esex,
birthday: birthday,
department: department,
eremark:eremark
};
alert("聯繫人信息更新成功!");
consoleDlg.dialog("close");
$("#gridTable").jqGrid("setRowData", data.employee.eid, dataRow);
} else {
alert("修改操作失敗!");
}
}
});
};
var addEmployee = function() {
var consoleDlg = $("#consoleDlg");
var eanme = $.trim(consoleDlg.find("#eanme").val());
var esex = $.trim(consoleDlg.find("#esex").val());
var birthday = $.trim(consoleDlg.find("#birthday").val());
var department = $.trim(consoleDlg.find("#department").val());
var eremark = $.trim(consoleDlg.find("#eremark").val());
var params = {
"employee.ename" : ename,
"employee.esex" : esex,
"employee.birthday" : birthday,
"employee.department" : department,
"employee.eremark" : eremark
};
var actionUrl = "employee_add.action";
$.ajax( {
url : actionUrl,
data : params,
dataType : "json",
cache : false,
error : function(textStatus, errorThrown) {
alert("系統ajax交互錯誤: " + textStatus);
},
success : function(data, textStatus) {
if(data.ajaxResult == "success") {
var dataRow = {
id : data.employee.eid, // 從Server端得到系統分配的id
ename :ename,
esex : esex,
birthday: birthday,
department: department,
eremark:eremark
};
var srcrowid = $("#gridTable").jqGrid("getGridParam", "selrow");
if(srcrowid) {
$("#gridTable").jqGrid("addRowData", data.employee.eid, dataRow, "before", srcrowid);
} else {
$("#gridTable").jqGrid("addRowData", data.employee.eid, dataRow, "first");
}
consoleDlg.dialog("close");
alert("聯繫人添加操作成功!");
} else {
alert("添加操作失敗!");
}
}
});
};
//數據刪除
var deleteEmployee = function() {
var consoleDlg = $("#consoleDlg");
var pId = $.trim(consoleDlg.find("#selectId").val());
var params = {
"employee.eid" : pId
};
var actionUrl = "employee_delete.action";
$.ajax({
url : actionUrl,
data : params,
dataType : "json",
cache : false,
error : function(textStatus, errorThrown) {
alert("系統ajax交互錯誤: " + textStatus);
},
success : function(data, textStatus) {
if (data.ajaxResult == "success") {
$("#gridTable").jqGrid("delRowData", pId);
consoleDlg.dialog("close");
alert("聯繫人刪除成功!");
} else {
alert("刪除操作失敗!");
}
}
});
};
以上是我對jqgrid的基本用法的一個總結,關於對jqgrid與後臺進行交互,如:Java中Struts2+Jqgrid的靈活使用會在稍後介紹。如有不足之處,還望多多指正