导言

在日常开发中经常会用到列表,相信用过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的更多相关文章

  1. jQuery EasyUI教程之datagrid应用(二)

    上次写到了让数据库数据在网页datagrid显示,我们只是单纯的实现了显示,仔细看的话显示的信息并没有达到我们理想的效果,这里我们丰富一下: 上次显示的结果是这样的 点击查看上篇:jQuery Eas ...

  2. jQuery EasyUI教程之datagrid应用(一)

    最近一段时间都在做人事系统的项目,主要用到了EasyUI,数据库操作,然后抽点时间整理一下EasyUI的内容. 这里我们就以一个简洁的电话簿软件为基础,具体地说一下datagrid应用吧 datagr ...

  3. jQuery EasyUI教程之datagrid应用(三)

    今天继续之前的整理,上篇整理了datagrid的数据显示及其分页功能 获取数据库数据显示在datagrid中:jQuery EasyUI教程之datagrid应用(一) datagrid实现分页功能: ...

  4. jQuery编写插件--封装全局函数的插件(一些常用的js验证表达式)

    上一篇写到了jQuery插件的3种类型,介绍了第一种类型的写法--封装jQuery对象的方法插件.这一篇要介绍第二种插件类型:封装全局函数的插件:这类插件就是在jQuery命名空间内部添加函数:这类插 ...

  5. Jquery Ajax简单封装(集中错误、请求loading处理)

    Jquery Ajax简单封装(集中错误.请求loading处理) 对Jquery Ajax做了简单封装,错误处理,请求loading等,运用到项目中集中处理会很方便. 技术层面没有什么好说的,请求是 ...

  6. [jQuery]我的封装笔记

    jQuery封装插件开发入门教程: http://www.awaimai.com/467.html 一.默认值和选项 jQuery.extend函数解释 extend(dest,src1,src2,s ...

  7. jQuery EasyUI API - Grid - DataGrid [原创汉化官方API]

    最近在学习jQuery EasyUI,发现中文的文档好少,部分文档不错但它是鸟语的,为了大家也为了自己学习吧,汉化做一下笔记. 有没有说清楚的,或者翻译不正确的地方还请大家谅解指出.. 由于工作时间原 ...

  8. jQuery对象插件封装步骤

    jQuery是js的一个非常优秀的库,它大大简化了js的很多操作,并且解决了js的大部分兼容性问题.甚至很多css兼容性问题,用jQuery写都能解决. 这里是对象插件的封装.当然,封装插件很多,这里 ...

  9. JQuery分页插件封装(源码来自百度,自己封装)

    最近由于项目的需要,做了一个基于JQuery的表格分页插件封装,部分源码来源百度,经由自己封装完成. 下面是具体代码和说明,仅供参考.第一步可以先将我的HTML,CSS,JS这三部分的代码创建好后先运 ...

随机推荐

  1. sublim text3 配置

    喜欢用sublime,但每次换环境都要重新百度下配置,太麻烦,故在此把自己喜欢的配置记录下来 sublime text2 可以直接在设置里改,但sublime text3不能直接在设置中改值,只能在s ...

  2. linux 安装jdk,tomcat 配置vsftp 远程连接

    不知不觉入行也有一年了,这两天在公司上班有空了就自己装了个vmware虚拟机,装了个红帽6.1完全命令行的操作系统,想着搭个公司现在在用的测试环境,没想到中间碰到了很多问题,不过大部分都解决了,现在可 ...

  3. nodejs: C++扩展

    Nodejs的C++扩展首先保证nodejs和v8都正确安装 下载NodeJS源码,我的放在D盘. NodeJS的C++扩展要用VS2010开发,新建一个空的Win32控制台项目,右键——属性,在常规 ...

  4. 4.2.2 网络编程之Socket

    1基于TCP协议的Socket 服务器端首先声明一个ServerSocket对象并且指定端口号,然后调用Serversocket的accept()方法接收客户端的数据.Accept()方法在没有数据进 ...

  5. QT 应用部署到Android的终端步骤

    参考网址: http://blog.csdn.net/syrchina/article/details/17335945

  6. hdu 5748(求解最长上升子序列的两种O(nlogn)姿势)

    Bellovin Time Limit: / MS (Java/Others) Memory Limit: / K (Java/Others) Total Submission(s): Accepte ...

  7. Orchard Express Oracle v1.7.2 发布

    发布说明: 1. 添加Oracle支持,在AppData目录下提供Oracle及Sql Server数据库创建脚本. 2. 修正上一版本(精简版 v1.7.2)中,Dashboard无需登录问题. O ...

  8. HTML 中禁用鼠标右键和不能选中文字

    在body中加这句就可以了. <body oncontextmenu="return false" onselectstart="return false" ...

  9. NodeJS Hello world

    #2 NodeJS Hello world 打开 https://nodejs.org/api/synopsis.html 将上述代码保存至D:\NODEJS\example.js 打开CMD窗口,定 ...

  10. Kindle 转换器

    一款比较好用的Kindle转换器,支持txt, opf, htm, html, epub 到 mobi 的转换,支持拖放操作,支持批量操作.只需要选中多个待转换的文件,拖放到程序窗口即可. 曾经用过一 ...