Jquery+artTemplate+layPage 封装datagrid
导言
在日常开发中经常会用到列表,相信用过easyui,Ext等很多,的确很强大,但想修改确实也不容易,我也用了几年的easyui,有时间时会想一下,自已随然没有前端的精湛技术,但可以在有这些技术的开源框架上封装一下组成自已的控件,方便又好上手,扩展容易。
我们经常用Layer弹窗控件,今天也用他家的分页控件layPage和都熟悉的腾讯的模板引擎artTemplate还有老牌Jquery封装一个小的datagrid功能简单够用就好,方便扩展用到功能再加
代码
/*
*基于Jquery 和 artTemplate 封装的列表控件
*可实现分页和无分页列表,功能单一欢迎大家补充
* Date: 2015-04-28
datagrid = $("#eTable").datagrid({
//pageIndex: 1,
//pageSize: 10,
//queryParams: $("#search").serialize(),
url: "/Layui/GetJson",
pagination: "pagination",
scriptHtml: "eTableHtml",
table: "eTableRow",
isPagination: true,
//onLoadSuccess: function (data) {
// //alert(data);
//}
});
*/
(function ($) {
function init(options, obj) {
function getParam() {
var param = "pageIndex=" + opts.pageIndex + "&pageSize=" + opts.pageSize;
param = param + "&" + opts.queryParams;
return param;
}
function queryForm() {
var cells = document.getElementById(opts.table).rows.item(0).cells.length;
if (opts.isPagination) {
document.getElementById(opts.pagination).innerHTML = "";
}
var trStr = "<tr><td colspan=" + cells + " style='text-align:center'>{0}</td></tr>";
obj.html(trStr.replace("{0}", "<img src='/Scripts/datagrid/images/loading.gif'/>数据正在加载中..."));
var url = opts.url + "?ts=" + Math.random();
$.post(url, getParam(), function (result) {
if (result.list.length == 0 || typeof (result.list.length) == "undefined") {
obj.html(trStr.replace("{0}", "<img width='18' src='/Scripts/datagrid/images/smiley_027.png'/>没有查询到您想要的数据"));
return;
}
data.list = result.list;
var html = template(opts.scriptHtml, data);
obj.html(html);
if (result.totalCount > 0 && opts.isPagination) {
totalCount = result.totalCount;
pageInitialize(opts.pagination, opts.pageIndex, opts.pageSize, result.totalCount);
}
callbackFun();
});
} function pageInitialize(pageID, pageIndex, pageSize, totalCount) {
laypage({
cont: pageID, //容器。值支持id名、原生dom对象,jquery对象。【如该容器为】:<div id="page1"></div>
pages: Math.ceil(totalCount / pageSize), //通过后台拿到的总页数
curr: pageIndex, //初始化当前页
jump: function (e, first) { //触发分页后的回调
opts.pageIndex = e.curr;
if (!first) { //一定要加此判断,否则初始时会无限刷新
queryForm();
}
}
});
} function callbackFun() {
if (opts.onLoadSuccess != null) {
opts.onLoadSuccess();
}
} var defaults = {
pageSize: 10,
pageIndex: 1,
queryParams: "",
pagination: "",
scriptHtml: "",
table: "",
url: "",
isPagination: false,
onLoadSuccess: null
} var opts = $.extend(defaults, options);
var data = new Array();
var totalCount;
queryForm(); var method = {};
return method.getPageIndex = function () {
return this.pageIndex;
},//当前页刷新
method.onReload = function () {
queryForm();
},//重新加载
method.onLoad = function () {
opts.pageIndex = 0;
queryForm();
},
method.getData = function () {
return data;
},
method.getTotalCount = function () {
return totalCount;
},
method
} $.fn.datagrid = function (options) {
return init(options, $(this));
}
})(jQuery)
用法
<table class="table table-compress mb20" id="eTableRow" width="800">
<thead>
<tr>
<th width="50%">ID</th>
<th width="50%">Name</th>
</tr>
</thead>
<tbody id="eTable"></tbody>
</table>
<div class="page" id="pagination">
</div> <script id="eTableHtml" type="text/html"> {{each list as value i}}
<tr>
<td width="50%" style="text-align:center"><span class="font-arial">{{value.Name}}</span></td>
<td width="50%" style="text-align:center">{{value.Address}}</td>
</tr>
{{/each}} </script> <script type="text/javascript">
$(function () {
datagrid = $("#eTable").datagrid({
//pageIndex: 1,
//pageSize: 10,
//queryParams: $("#search").serialize(),
url: "/Layui/GetJson",
pagination: "pagination",
scriptHtml: "eTableHtml",
table: "eTableRow",
isPagination: true,
//onLoadSuccess: function (data) {
// //alert(data);
//}
}); }); </script>
</body>
注:支持单页多列表多分页
Jquery+artTemplate+layPage 封装datagrid的更多相关文章
- jQuery EasyUI教程之datagrid应用(二)
上次写到了让数据库数据在网页datagrid显示,我们只是单纯的实现了显示,仔细看的话显示的信息并没有达到我们理想的效果,这里我们丰富一下: 上次显示的结果是这样的 点击查看上篇:jQuery Eas ...
- jQuery EasyUI教程之datagrid应用(一)
最近一段时间都在做人事系统的项目,主要用到了EasyUI,数据库操作,然后抽点时间整理一下EasyUI的内容. 这里我们就以一个简洁的电话簿软件为基础,具体地说一下datagrid应用吧 datagr ...
- jQuery EasyUI教程之datagrid应用(三)
今天继续之前的整理,上篇整理了datagrid的数据显示及其分页功能 获取数据库数据显示在datagrid中:jQuery EasyUI教程之datagrid应用(一) datagrid实现分页功能: ...
- jQuery编写插件--封装全局函数的插件(一些常用的js验证表达式)
上一篇写到了jQuery插件的3种类型,介绍了第一种类型的写法--封装jQuery对象的方法插件.这一篇要介绍第二种插件类型:封装全局函数的插件:这类插件就是在jQuery命名空间内部添加函数:这类插 ...
- Jquery Ajax简单封装(集中错误、请求loading处理)
Jquery Ajax简单封装(集中错误.请求loading处理) 对Jquery Ajax做了简单封装,错误处理,请求loading等,运用到项目中集中处理会很方便. 技术层面没有什么好说的,请求是 ...
- [jQuery]我的封装笔记
jQuery封装插件开发入门教程: http://www.awaimai.com/467.html 一.默认值和选项 jQuery.extend函数解释 extend(dest,src1,src2,s ...
- jQuery EasyUI API - Grid - DataGrid [原创汉化官方API]
最近在学习jQuery EasyUI,发现中文的文档好少,部分文档不错但它是鸟语的,为了大家也为了自己学习吧,汉化做一下笔记. 有没有说清楚的,或者翻译不正确的地方还请大家谅解指出.. 由于工作时间原 ...
- jQuery对象插件封装步骤
jQuery是js的一个非常优秀的库,它大大简化了js的很多操作,并且解决了js的大部分兼容性问题.甚至很多css兼容性问题,用jQuery写都能解决. 这里是对象插件的封装.当然,封装插件很多,这里 ...
- JQuery分页插件封装(源码来自百度,自己封装)
最近由于项目的需要,做了一个基于JQuery的表格分页插件封装,部分源码来源百度,经由自己封装完成. 下面是具体代码和说明,仅供参考.第一步可以先将我的HTML,CSS,JS这三部分的代码创建好后先运 ...
随机推荐
- IntelliJ IDEA 目录技巧
IntelliJ IDEA的Web应用的目录结构 Ø 目录图: Ø 目录解释: 开发目录 目录名称 描述 Test 工程名称 lib Jar包的存放目录 src 源文件也就是文件(类,资源文件)存放的 ...
- 斯坦福第十二课:支持向量机(Support Vector Machines)
12.1 优化目标 12.2 大边界的直观理解 12.3 数学背后的大边界分类(可选) 12.4 核函数 1 12.5 核函数 2 12.6 使用支持向量机 12.1 优化目标 到目前为 ...
- border-radius(边框半径)
可以使用像素来指定border-radius的属性值使角变圆 除了像素,你还可以使用百分比来指定border-radius边框半径的值
- PHP生成迅雷、快车、旋风等软件的下载链接代码实例
PHP生成迅雷.快车.旋风等软件的下载链接代码实例 <?php function Download() { $urlodd=explode('//',$_POST["url" ...
- cygwin下清屏的三种方法
1. 做一个clear脚本,放到/bin下去 $vim /bin/clear #!/bin/bash cmd /c cls 2. ctrl + L 3. 在cygwind中install ncurse ...
- httpd 虚拟主机建立之访问机制及其日志定义
注:关闭防火墙,selinux VirtualHost定义: 基于IP地址VirtualHost: 编辑httpd.conf文件: #DocumentRoot "/web/html" ...
- 利用Formdata实现form提交文件上传不跳转页面
作者:幻月九十链接:https://www.zhihu.com/question/19631256/answer/119911045来源:知乎著作权归作者所有,转载请联系作者获得授权. $('form ...
- C#设计模式(16)——迭代器模式(Iterator Pattern)
一.引言 在上篇博文中分享了我对命令模式的理解,命令模式主要是把行为进行抽象成命令,使得请求者的行为和接受者的行为形成低耦合.在一章中,将介绍一下迭代器模式.下面废话不多说了,直接进入本博文的主题. ...
- Html5前端框架
BootCss bootcss.com amazeui http://amazeui.org/
- ZooKeeper 3.5.0 分布式配置问题
ZooKeeper 3.5.0 分布式配置好后,执行./zkServer.sh start 命令启动,报如下错误: 2015-07-02 21:06:01,671 [myid:] - INFO [ma ...