导言

在日常开发中经常会用到列表,相信用过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. Yii中事件触发机制

    控制器初始化中添加事件处理方法,在需要触发的地方直接触发 public function init() { parent::init(); // TODO: Change the autogenera ...

  2. "产品测试管理&敏捷项目管理"研讨会在深圳成功举办!

    2016年1月9日,由深圳市共创力企业管理咨询发起的"产品测试管理&敏捷项目管理"研讨会在深圳南山科技园创新谷咖啡成功举办!参加此次研讨会的企业有华为.中兴.烽火.腾讯.康 ...

  3. delphi 十进制十六进制转换

    delphi有提供十进制转换成十六进制的函数: IntToStr();   返回值为String // 十进制转十六进制 var i: integer; str: string; begin i := ...

  4. Xamarin.Android之下拉刷新

    一.前言 当今任何一个App中只要存在列表,基本上都会使用下拉刷新,而身为Xamarin一族的我们自然也不会落后,下面笔者将带领大家在Xamarin下实现Android中的下拉刷新的效果. 二.准备工 ...

  5. signalR制作微信墙 开源

    微信墙 上一篇文章中已经用PHP搭建了一个微信墙获取信息的服务器,我这里使用微软的signalr搭建一个客户端,signalr是一个为开发者开发实时应用的 一个库文件,支持windows server ...

  6. Asp.Net Web API 2第六课——Web API路由和动作选择

    Asp.Net Web API 导航 Asp.Net Web API第一课——入门http://www.cnblogs.com/aehyok/p/3432158.html Asp.Net Web AP ...

  7. MSTest、NUnit、xUnit.net 属性和断言对照表

    MSTest.NUnit.xUnit.net 属性对照表 MSTest NUnit xUnit.net Comments [TestMethod] [Test] [Fact] Marks a test ...

  8. Android开发学习总结(五)——Android应用目录结构分析

    一.手动创建android项目 手动创建一个Android项目,命名为HelloWorld,命令如下: android create project -n HelloWorld -t -p E:/An ...

  9. [Java Web] 2、Web开发中的一些架构

    1.企业开发架构: 企业平台开发大量采用B/S开发模式,不管采用何种动态Web实现手段,其操作形式都是一样的,其核心操作的大部分都是围绕着数据库进行的.但是如果使用编程语言进行数据库开发,要涉及很多诸 ...

  10. 深入浅出OOP(四): 多态和继承(抽象类)

    在本文中,我们讨论OOP中的热点之一:抽象类.抽象类在各个编程语言中概念是一致的,但是C#稍微有些不一样.本文中我们会通过代码来实现抽象类,并一一进行解析. Abstract Classes 在微软的 ...