jqGrid增删改查显示——显示+nodejs后台
来源:互联网 发布:凯里欧文16年数据 编辑:程序博客网 时间:2024/06/05 10:04
这几天开始总结一下最近研究的一个插件——jqGrid,都是些非常入门的点,希望能帮到有需要的人吧~
PS:博主的方法不是唯一的,也不完全正确,有不对的地方希望能指出来!!!我只是把我知道的介绍给大家。
(1)引入jqGrid插件的js文件
这里就不详细说了,值得注意的是:
从3.5版本开始,jqGrid完全支持jquery UI的theme。我们可以从http://jqueryui.com/themeroller/下载我们所需要的theme。当然,你也可以编辑自己的theme。
jqGrid也并不需要把所有的css文件都引入进来,只需导入核心css文件“ui.theme.css ” 以及“ui.core.css”即可,文件位于目录development-bundle/themes下。
但是jquery UI的主题也非常难看,有能力的同志就自己写css吧。(2)在div块中引入插件
1.html
<div class="content-pager"> <table id="jqGrid01"></table> <div id="jqGridPager01"></div> </div>
2.jade
.content-pager table#jqGrid01 #jqGridPager01
jqGrid01:显示数据的表格,对应下图的表格
jqGridPager01:表格下面的导航条,对应下图最下面一行的导航条
介绍该表格内容
①该表格是显示学生和老师的资料
userName:用户真实名字
accountName:用户登录名字
accountPassword:用户登录密码
roleType:权限
schoolName:学校名称
schoolClassName:班级名称
②ReSet:覆盖从服务器获取的密码,并且点击能修改后台服务器的密码
③最后一列按钮依次为:编辑该列,保存改列,重置
④导航条按钮依次为:删除,增加,查找,刷新(其余都是该插件本身自带)
(3)通过ajax获取后台数据
ajax:
<span style="font-size:10px;"><script>$(document).ready(function () { $.ajax({//先用ajax与后台交互获取要显示的数据 url: "/userFindAction",//与后台交互的url type: "GET",//ajax提交方式 dataType: "json",//从服务器端返回的数据类型 success: function (data) { //data是从服务器返回的json对象,其中result是我要显示的数据内容 window.datas = data.result; //设置content-pager高度 $(".content-pager").height($(window).height() - 400);//(4).配置jqGrid的属性并且渲染//(5).配置导航条的属性 }, error: function () { } } ); });</script></span>
nodejs:
①index.js
router.get('/userFindAction',userManagementController.userFindAction());
②userManagementController
exports.userFindAction = function() { return function(req, res) { //查找user操作... res.json({success:1,flag:'find user List success',result:users}); }}
查找操作逻辑就不贴出来了,各位按照自己逻辑来写就可以了
从服务器返回的data:
[ { id: 1, userId: 566a7e6e6425f95c114d3a40, userName: '8888', accountName: '6666', accountPassword: '12345', schoolClassName: '大一软件', schoolName: '北京师范大学珠海分校', roleType: 'Teacher' }, { id: 2, userId: 56821bed1d8474c8902dd74a, userName: 'jiang', accountName: 'jiang', accountPassword: '12345', schoolClassName: '大一软件', schoolName: '北京师范大学珠海分校', roleType: 'Teacher' }, { id: 3, userId: 56821c231d8474c8902dd74d, userName: 'xue', accountName: 'xue', accountPassword: '12345', schoolClassName: '大一软件', schoolName: '北京理工大学珠海分校', roleType: 'Teacher' }, { id: 4, userId: 56821c551d8474c8902dd750, userName: 'student1', accountName: 'student1', accountPassword: '12345', schoolClassName: '大一软件', schoolName: '北京师范大学珠海分校', roleType: 'Student' }, { id: 5, userId: 56821c671d8474c8902dd753, userName: 'student2', accountName: 'student2', accountPassword: '12345', schoolClassName: '大一软件', schoolName: '北京理工大学珠海分校', roleType: 'Student' }, { id: 6, userId: 5682439d8c481d2468558ba1, userName: '11', accountName: '11', accountPassword: '00000', schoolClassName: '大三软件一班', schoolName: '北京理工大学珠海分校', roleType: 'Teacher' } ]
PS:最好设定一下id这个字段,避免行id冲突。
原因:http://blog.csdn.net/tangjiarao/article/details/50461445
(4)通过js配置jqGrid table的属性并渲染
//数据成功拿到后就渲染jqgrid // 配置jqGrid的属性 jQuery("#jqGrid01").jqGrid({ data: datas,//从服务器拿来的数据 datatype: "local",//显示数据的方式,因为通过ajax拿到数据了,所以是本地的 jsonReader: {//描述json 数据格式的数组 repeatitems: false// 如果设为false,则jqGrid在解析json时,会根据name来搜索对应的数据元素(即可以json中元素可以不按顺序);而所使用的name是来自于colModel中的name设定。 }, height: $('.content-pager').height(), // Auto height step 2, rowNum: 10,//在grid上初始显示记录条数 rowList: [10, 20, 30],//一个下拉选择框,用来改变显示记录数 colNames: ['userId', 'userName', 'accountName', 'accountPassword', 'roleType', 'schoolName', 'schoolClassName', 'active',''],//列显示名称,是一个数组对象 colModel: [//配置显示的列属性 /** * 对应后台返回数据datas中的userId * hidden:控制该列不显示 */ {name: 'userId', index: 'userId', width: 60,hidden:true}, /** * 对应后台返回数据datas中的userName * editable:定义字段是否可编辑 */ { name: 'userName', index: 'userName', width: 100, editable: true, editoptions: {size: "20", maxlength: "30"}//当执行修改和新增的操作时,会显示输入框,输入框的配置 }, /** * 对应后台返回数据datas中的accountName * editable:定义字段是否可编辑 */ { name: 'accountName', index: 'accountName', width: 100, editable: true, editoptions: {size: "20", maxlength: "30"} }, /** * 对应后台返回数据datas中的accountPassword * search:定义此列是否可以作为搜索列 * 注:由于不想让用户看到密码,所以将改列的内容改为一个重置按钮,点击可以修改密码 */ { name: 'accountPassword', index: 'accountPassword', width: 120, search:false }, /** * 对应后台返回数据datas中的roleType * editrules:设置编辑字段的控件的规则 * edittype:控件该字段在修改或者新增时类型 select为下拉菜单 */ { name: 'roleType', index: 'roleType', width: 80, editable: true, editrules: true, edittype: "select", }, /** * 对应后台返回数据datas中的schoolName */ { name: 'schoolName', index: 'schoolName', width: 150, editable: true, editrules: true, edittype: "select", }, /** * 对应后台返回数据datas中的schoolClassName * value:在修改或者新增时下拉框显示的数据 */ { name: 'schoolClassName', index: 'schoolClassName', width: 150, editable: true, edittype: "select", editoptions: {value: {'请选择班级': '请选择班级'}} }, /** * 该字段是在前端自定义的字段 * sortable:设置该字段是否进行排序 */ { name: 'active', index: 'active', width: 60,sortable : false }, /** * 改列显示编辑、保存、重置按钮,在编辑操作会用到 */ { name : 'act',index : 'act',width : 75,sortable : false,search:false }, ], pager: "#jqGridPager01",//定义翻页用的导航栏,必须是有效的html元素(即定义的div块)。 viewrecords: true,//定义是否要显示总记录数 caption: "User Management",//表格名称 hidegrid: false,//启用或者禁用控制表格显示、隐藏的按钮,只有当caption 属性不为空时起效 multiselect: true,//定义是否可以多选 altRows: true, rownumbers: true,//如果为ture则会在表格左边新增一列,显示行顺序号 /** * 当从服务器返回响应时执行的方法 * ----我的理解是加载表格完成后执行的方法---- */ loadComplete: function () { //设置Reset按钮 setReset(); //设置最后一列的修改按钮 setEdit(); }, });
①方法setReset();
/** * set reset Button */ function setReset(){ var ids = jQuery("#jqGrid01").jqGrid('getDataIDs');//返回当前grid里所有数据的id for (var i = 0; i < ids.length; i++) { var id = ids[i]; var rowData = $("#jqGrid01").getRowData(id); var reSetBtn = "<a href='#' style='color:#f60' onclick='return resetAction("+id+")' >ReSet</a>";//将要新增的html代码转为对象,resetAction(id)是重置密码的逻辑实现方法,参数是行id jQuery("#jqGrid01").jqGrid('setRowData', ids[i], {accountPassword: reSetBtn});//setRowData方法更新行的值,ids[i]为行id,参数3:要更新的列 } }
resetAction(id);
function resetAction(id) { $.ajax({ url: '/resetPass', async: false, cache: false, dataType: "json", data: { id: datas[id-1].userId, //由于id是从1开始的,所以id-1找到本地数据中对应的那条数据,并将userid传给服务器 }, success: function (result) { // alert(JSON.stringify(result)); if (result.success == 1) { alert("重置密码成功"); } else { alert("重置密码失败"); } } });}
后台逻辑不贴出来,主要给大家介绍前端跟后台怎么交互。
②方法setEdit();
/** * set edit Button */ function setEdit(){ var ids = jQuery("#jqGrid01").jqGrid('getDataIDs');//返回当前grid里所有数据的id for ( var i = 0; i < ids.length; i++) { var cl = ids[i]; var be = "<button type='button' class='btn btn-default btn-xs' aria-label='LeftAlign' onclick=\"editRows("+cl+")\"> " +//调用编辑方法,修改操作用到 "<span class = 'glyphicon glyphicon-edit' aria-hidden = 'true' ></span></button>";//设置icon var se = "<button type='button' class='btn btn-default btn-xs' aria-label='LeftAlign' onclick=\"saveRows("+cl+")\" > " +//调用保存方法,修改操作用到 "<span class = 'glyphicon glyphicon-ok' aria-hidden = 'true' ></span></button>";//设置icon var ce = "<button type='button' class='btn btn-default btn-xs' aria-label='LeftAlign' onclick=\"jQuery('#jqGrid01').restoreRow('" + cl + "');\" > " +//调用重置方法,修改操作用到 "<span class = 'glyphicon glyphicon-remove' aria-hidden = 'true' ></span></button>";//设置icon jQuery("#jqGrid01").jqGrid('setRowData', ids[i], { act : be + se + ce }); } }
(5)通过js配置导航条属性并渲染
// 配置导航条属性 jQuery("#jqGrid01").navGrid('#jqGridPager01', { //设置为false需要自己重新重新该方法 edit: false, add: false, del: false, search: true },{},{},{},{multipleSearch:true}) /** * 增加自定义按钮——add按钮 * 参数1:导航条div名称 * 参数2:按钮名称,可以为空 * 参数3:按钮的图标,string类型,必须为jquery UI theme图标 * onClickButton:点击该按钮时候的操作 */ .navButtonAdd('#jqGridPager01', { caption: "", buttonicon: "ui-icon-circle-plus", onClickButton: function () { //增加一行操作 addRows(); }, position: "first"//first或者last,按钮位置 }) .navButtonAdd('#jqGridPager01', { caption: "", buttonicon: "ui-icon-trash", onClickButton: function () { //删除一行操作 removeRows(); }, position: "first" }) //分隔符 .navSeparatorAdd("#jqGridPager01", {sepclass: "ui-separator", sepcontent: ''});
相关文章:
http://blog.csdn.net/tangjiarao/article/details/50456160 联动下拉
http://blog.csdn.net/tangjiarao/article/details/50460146 增加
http://blog.csdn.net/tangjiarao/article/details/50460780 修改
http://blog.csdn.net/tangjiarao/article/details/50461122 删除
http://blog.csdn.net/tangjiarao/article/details/50461998 查找
参考文章:
http://www.w3dev.cn/article/20130703/jqGrid-form-editing-config.aspx
https://github.com/jiangyuan/blog/blob/a971c118e465ab2ce3a3b43034cd60f1f710ffa3/note/docOfjqGrid/%E7%BC%96%E8%BE%91%E4%B9%8B%E5%9B%9B%20%E8%A1%A8%E5%8D%95%E7%BC%96%E8%BE%91.md
blog:http://blog.csdn.net/zgjsczwj/article/category/1193882
UI库:http://jqueryui.com/themeroller/
api:http://blog.mn886.net/jqGrid/
http://www.cnblogs.com/lipan/archive/2010/11/25/1887160.html
- jqGrid增删改查显示——显示+nodejs后台
- jqGrid增删改查显示——增加+nodejs后台
- jqGrid增删改查显示——修改+nodejs后台
- jqGrid增删改查显示——删除+nodejs后台
- jqGrid增删改查显示——联动下拉框+nodejs后台
- jqGrid增删改查显示——查找
- jqgrid增删改查
- Jqgrid 增删改查
- jqgrid的增删改查
- nodejs+easyui(抽奖活动后台)增删改查
- 商品增删改查之分页显示
- Java学习札记——后台增删改查
- NODEJS mongoose 增删改查
- jqGrid用法及增删改查方法
- MySQL—增删改查
- MongoDB—增删查改
- String—增删查改
- 运用gridview显示xml文件并能增删改查
- 鼠标悬浮 边框动态出来特效
- [深入ReactNative]第一篇 通讯及消息循环代码剖析
- HDU 5606 tree(并查集)
- 自定义UISearchiBar
- Python集合(set)类型的操作
- jqGrid增删改查显示——显示+nodejs后台
- java.lang.IllegalStateException: Fragment(XXFragment) not attached to Activity异常。
- 如何定义XSD并在XML中使用XSD
- 《Linux命令、编辑器与Shell编程》读书笔记9-Linux网络管理
- Java AQS源码分析
- 计算机网络学习——网络安全
- Android Studio 设置代码提示和代码自动补全快捷键--Eclipse 风格
- js正则表达式regExp类型
- SSH网上商城---邮件发送