导言

在日常开发中经常会用到列表,相信用过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. [转]MySQL中存储过程权限问题

    MySQL中以用户执行存储过程的权限为EXECUTE 比如我们在名为configdb的数据库下创建了如下存储过程,存储过程的定义者为user_admin use configdb; drop proc ...

  2. java经典50编程题

    菲波拉契数列:有一对兔子,从出生后第 3 个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? package com.day2; public ...

  3. SQL语句中如何把文件以二进制数组形式存入数据库

    System.IO.FileStream fs = new FileStream("1.txt", FileMode.Open); string strConn = "D ...

  4. JMeter入门

    下载及安装 下载地址:http://jmeter.apache.org/download_jmeter.cgi 直接下载Release版本,解压即可使用 MAC.Linux中直接运行:jmeter文件 ...

  5. my sql

    如果改了上面的4个配置文件,要让其立即生效,可以使用如下方法 source .bash_profile . .bash_profile 基于Apache+php+mysql的许愿墙网站的搭建 方案一: ...

  6. Java多线程学习(转载)

    Java多线程学习(转载) 时间:2015-03-14 13:53:14      阅读:137413      评论:4      收藏:3      [点我收藏+] 转载 :http://blog ...

  7. Mac OS X 安装ruby环境

    1.查看版本 $ ruby -v ruby 2.0.0p481 (2014-05-08 revision 45883) [universal.x86_64-darwin14] 2.查看源 $ gem ...

  8. php性能分析工具 - xhprof的安装使用

    一.前言 有用的东西还是记录下来吧,也方便以后的查询:这次记录一下xhprof的安装使用: xhprof是facebook开源出来的一个php轻量级的性能分析工具,跟Xdebug类似,但性能开销更低, ...

  9. Jetty 9嵌入式开发

    官方网址:http://www.eclipse.org/jetty/ 下载地址:http://download.eclipse.org/jetty/stable-9/dist/ 文档网址:http:/ ...

  10. 将外卖O2O广告一棍子打成竞价排名,秤把平了吗?

    近日,诸多媒体报道称美团外卖.饿了么等外卖O2O将竞价排名引入外卖平台当中进行广告运营一事闹得沸沸扬扬.那么,美团外卖.饿了么真的都是竞价排名吗? 其实,美团外卖的付费推广仅仅只是针对列表的固定位置, ...