jqGrid 原理

jqGrid是典型的B/S架构,服务器端只是提供数据管理,客户端只提供数据显示。换句话说,jqGrid可以以一种更加简单的方式来展现你数据库的信息,而且也可以把客户端数据传回给服务器端。

对于jqGrid我们所关心的就是:必须有一段代码把一些页面信息保存到数据库中,而且也能够把响应信息返回给客户端。jqGrid是用ajax来实现对请求与响应的处理。

I.准备JQgrid 包

  1. <!-- 引用jQueryUI的start主题 -->

  2. <link rel="stylesheet" type="text/css" href="http://code.jquery.com/ui/1.10.3/themes/start/jquery-ui.css" />

  3. <!-- 引用jqGrid样式 -->

  4. <link rel="stylesheet" type="text/css" href="/resources/css/ui.jqgrid.css" />

  5. <!-- 引用jQuery -->

  6. <script type="text/javascript" src="/resources/scripts/libs/jquery-1.10.2.min.js"></script>

  7. <!-- 引用jqGrid -->

  8. <script type="text/javascript" src="/resources/scripts/libs/jquery.jqGrid.min.js"></script>

  9. <!-- 引用jqGrid提供的国际化,否则中文会报JS错误 -->

  10. <script type="text/javascript" src="/resources/scripts/i18n/grid.locale-cn.js"></script>

II.后台反回数据JSON 格式这里不用多讲解

III. 前端(重点)直接上代码

<div class="h">Search By:</div>
<div>
<input type="checkbox" id="autosearch" onclick="enableAutosubmit(this.checked)"> Enable Autosearch <br />
</div>
<div style="margin-bottom:5px; width:100%;">
<input type="text" id="keywords" style="width:40%;" placeholder="Please enter what you want to search here" onkeydown="doSearch(arguments[0]||event)" />
<input type="button" onclick="gridReload()" id="submitButton" value="Search" />
</div>
<div class="gridview" style="width:100%">
<table id="listJq"></table>
<div style=" background-color:aliceblue;position: absolute;margin-right:50px;" id="pager">
</div>

</div>

<script type="text/javascript" charset="utf-8">

$(function () {
BindList();
})
function BindList() {

$.jgrid.defaults.styleUI = "Bootstrap";

$("#listJq").jqGrid({
url: "/Home/GetUser",
datatype: "json",
height: '95%',
width: '100%',
cellEdit: false,//需要colModel字段editable属性搭配使用
colNames: ['Emp No', 'Name', 'FirName', 'Dept', 'Site', 'HireDate', 'Position', 'Work Type'],//格式化列名
colModel: [

{ name: 'Empcode', index: 'Empcode', sortable: true, align: 'center', width: 90, search: true, searchoptions: { sopt: ['eq', 'cn'] } },
{ name: "UserName", index: "UserName", sortable: true, align: 'center', width: 60, editable: true, searchoptions: { sopt: ['eq', 'cn'] } },
{ name: "FIRSTNM", index: "FIRSTNM", sortable: true, align: 'center', width: 120, searchoptions: { sopt: ['eq', 'cn'] } },
{ name: "Dept", index: "Dept", sortable: true, align: 'center', width: 95, editable: true, searchoptions: { sopt: ['eq', 'cn'] } },
{ name: "SiteCode", index: "SiteCode", sortable: true, align: 'center', width: 55, searchoptions: { sopt: ['eq', 'cn'] } },
{ name: "HireDate", index: "HireDate", sortable: true, align: 'center', width: 120, formatter: DateFmatter/*日期格式化*/, searchoptions: { sopt: ['cn'] } },
{ name: "Position", index: "Position", sortable: true, align: 'left', width: 300, searchoptions: { sopt: ['eq', 'cn'] } },
{ name: "IsLabors", index: "IsLabors", sortable: true, align: 'left', width: 300, searchoptions: { sopt: ['eq', 'cn'] } }
],
loadonce: true,//初始化数据,否则页数不对
rowNum: 15,//分页条数
rowList: [15, 100, 200, 300, 500, 1000],//分页菜单
sortable: true,//是否可排序
sortname: ["Emp No"],//排序列
sortorder: "desc",//排序规则
pgbuttons: true,//是否显示翻页按钮
pginput: true,//是否显示跳转页面的输入框
viewrecords: true,//是否要显示总记录数
pager: '#pager',//分页DIV id
recordtext: "第{0} - {1}条 共 {2} 条",
pgtext: '当 前 页 {0} 总 共 {1}页',
rownumbers: true,//是否展示行号
caption: "User Information List",

ondblClickRow: function (id) {//双击行操作事件
//alert("You double click row with id: " + id);
},
onSortCol: function (name, index) {//点击列操作事件
//alert("Column Name: " + name + " Column Index: " + index);
},

});

//$("#listJq").jqGrid('navGrid', '#pager', { edit: false, add: false, del: false });//显示搜索工具栏
//jQuery("#listJq").jqGrid('filterToolbar', { searchOperators: true });//列下方显示搜索框

}
function DateFmatter(cellvalue, options, rowObject) {//日期格式化
return new Date(cellvalue).format("yyyy-MM-dd");
}

var timeoutHnd;
var flAuto = false;
function doSearch(ev) {
if (!flAuto)
return;
if (timeoutHnd)
clearTimeout(timeoutHnd);
timeoutHnd = setTimeout(gridReload, 500);
}

function gridReload() {
var keyword = jQuery("#keywords").val() || "";

jQuery("#listJq").jqGrid('setGridParam', {
url: "/Home/SearUser?keyword=" + keyword,
datatype: 'json',
page: 1
}).trigger("reloadGrid");
}

function enableAutosubmit(state) {
flAuto = state;
jQuery("#submitButton").attr("disabled", state);
}

Date.prototype.format = function (format) {
var o = {
"M+": this.getMonth() + 1, //month
"d+": this.getDate(), //day
"h+": this.getHours(), //hour
"m+": this.getMinutes(), //minute
"s+": this.getSeconds(), //second
"q+": Math.floor((this.getMonth() + 3) / 3), //quarter
"S": this.getMilliseconds() //millisecond
}
if (/(y+)/.test(format)) format = format.replace(RegExp.$1,
(this.getFullYear() + "").substr(4 - RegExp.$1.length));
for (var k in o) if (new RegExp("(" + k + ")").test(format))
format = format.replace(RegExp.$1,
RegExp.$1.length == 1 ? o[k] :
("00" + o[k]).substr(("" + o[k]).length));
return format;
}

</script>

效果图:

JQGrid 应用的更多相关文章

  1. jqGrid合并表头

    jqGrid是一款常用的制表软件,最近开发刚好用到.记录一下常用功能留着以后查找顺便发扬一下开源精神. 二级表头是一种经常会碰到的需求,很多时候为了方便查找需要在原有的表头上再加一层,区分表格不同列的 ...

  2. jqGrid插件getCol方法的一个改进

    jgGrid插件是非常常用的一个基于jQuery的表格插件,功能非常强大.我最近也频繁使用.但是这个插件也有一些不够完善的地方.比如这个getCol方法. getCol方法接受三个参数 colname ...

  3. jqgrid+bootstrap样式实践

    jqgrid+bootstrap样式实践,报错数据加载,选中,删除等功能 需要引入的样式 bootstrap.min.css ui.jqgrid.css 需要引入的JS jquery.min.js b ...

  4. jqGrid jqGrid分页参数+条件查询

    HTML <div class="row"> <div class="col-sm-20"> <form id="for ...

  5. 重复加载同一个jqgrid

    重复加载同一个jqgrid时需要先清除原先的数据,再进行加载新的数据: 清除时使用方法:jQuery.jgrid.gridUnload('jqGridId'); 同时还有一个GridDestroy的方 ...

  6. Web jquery表格组件 JQGrid 的使用 - 从入门到精通 开篇及索引

    因为内容比较多,所以每篇讲解一些内容,最后会放出全部代码,可以参考.操作中总会遇到各式各样的问题,个人对部分问题的研究在最后一篇 问题研究 里.欢迎大家探讨学习. 代码都经过个人测试,但仍可能有各种未 ...

  7. 五分钟搭建起一个包含CRUD功能的JqGrid表格

    之前的项目也曾用过JgGrid对它的基本功能也是略有了解,网上有个国外的开源的项目,但是不适合个人的风格,所以花了3天空余的时间封装了下JqGrid,也算是参加开发工作10个月以来写的第一个比较完整的 ...

  8. [译]MVC网站教程(四):MVC4网站中集成jqGrid表格插件(系列完结)

    目录 1.   介绍 2.   软件环境 3.   在运行示例代码之前(源代码 + 示例登陆帐号) 4.         jqGrid和AJAX 5.         GridSettings 6.  ...

  9. jqGrid的autoencode参数设置为true在客户端可能引发的编码问题

    不久前使用jqGrid+MVC做过一段时间开发. 一开始,分页参数几乎都是默认值,jqGrid的分页功能很好用. 考虑到each input is evil,我们的系统对安全性又有较高要求,所以,为了 ...

  10. jQuery插件:jqGrid引入及基本属性

    1. jqGrid下载 jqGrid下载地址: http://www.trirand.com/blog/ jqGrid Demo: http://www.guriddo.net/demo/guridd ...

随机推荐

  1. 牛客小白月赛17 A 小sun的假期

    传送门 题意: 第一行两个数n,m,代表总共有n天,m个安排.接下来有m行,每行是一个安排l,r,代表从第l天到第r天,小sun有安排了.安排可能会重复. 小 sun 非常喜欢放假,尤其是那种连在一起 ...

  2. poj3260 The Fewest Coins

    Description Farmer John has gone to town to buy some farm supplies. Being a very efficient man, he a ...

  3. js--执行上下文和作用域相关问题

    前言 如果你是或者你想成为一名合格的前端开发工作者,你必须知道JavaScript代码在执行过程,知道执行上下文.作用域.变量提升等相关概念,并且熟练应用到自己的代码中.本文参考了你不知道的JavaS ...

  4. PowerShell随笔3 ---别名

    上一篇提到了别名,这个有必要说一下,因为我们常常会遇到以下两种情况: 自己写脚本,想快速一些,使用命名 看别人的脚本,发现别人和你想的一样,用了别名,但是你忘记了这个别名是什么意思. 我们可以通过Ge ...

  5. H5网页应用打包安卓App (全网最详细教程)

    img { box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15) !important } .red { color: rgba(255, 0, 0, 1) } ...

  6. K8S(12)配置中心实战-多环境交付apollo三组件

    k8s配置中心实战-多环境交付apollo三组件 目录 k8s配置中心实战-多环境交付apollo三组件 1.环境准备工作 1.1 zk环境拆分 1.2 namespace分环境 1.3 数据库拆分 ...

  7. Lightoj 1038 - Race to 1 Again【期望+dp】

    题目:戳这里 题意:一个数字n不断迭代地除以自身的因子得到1.求这个过程中操作除法次数的期望. 解题思路: 求概率基本都是从一个最基础的状态开始延伸推出公式,得出答案.因为每个数都有个共同的最终状态1 ...

  8. Mysql(三)------事务的特性、事务并发、事务读一致性问题

    1 什么是数据库的事务? 1.1 事务的典型场景 在项目里面,什么地方会开启事务,或者配置了事务?无论是在方法上加注解,还 是配置切面 <tx:advice id="txAdvice& ...

  9. JVM终结篇

    1.1 重新认知JVM 之前我们画过一张图,是从Class文件到类装载器,再到运行时数据区的过程.现在咱们把这张图不妨丰富完善一下,展示了JVM的大体物理结构图. 1.2 GC优化 内存被使用了之后, ...

  10. SQL优化这么做就对了

    目录 前言 SQL优化一般步骤 1.通过慢查日志等定位那些执行效率较低的SQL语句 2.explain 分析SQL的执行计划 3.show profile 分析 4.trace 5.确定问题并采用相应 ...