工作中遇到这一需求,时间仓促赶着演示,只用了1个多小时随随便便做的,满足自定义以及同页面多块分页同时进行,多的不说,直接上demo,工作忙,没时间细化,希望哪位路过优化细化后共享下,最后附上使用说明
1、自己刚刚开始整合的小类库
View Code
String.prototype.trim = function () { return this.replace(/(^\s*)|(\s*$)/g, ""); } String.prototype.ltrim = function () { return this.replace(/(^\s*)/g, ""); } String.prototype.rtrim = function () { return this.replace(/(\s*$)/g, ""); } String.prototype.isNumber = function () { return this != "" && !isNaN(this); } String.prototype.toFix = function (fix) { /// <summary> /// 去掉多余小数并且不四舍五入 /// </summary> /// <param name="fix" type="Number"> /// 要保留的小数位数 /// </param> /// <returns type="Number" /> if (this.isNumber() && fix.isNumber()) { var array = this.split('.'); if (array.length > 1 && fix.split('.').length == 1) { if (fix == 0) { return Number(array[0]); } return Number(array[0] + "." + array[1].substring(0, fix)); } } return this; } Number.prototype.toFix = function (fix) { return this.toString().toFix(fix.toString()); }
2、主要js代码
View Code
function myAjaxOperation(dom, currentIndex, pageSize, pageCount) { this.dom = dom; this.currentIndex = currentIndex; this.pageSize = pageSize; this.pageCount = pageCount; } myAjaxOperation.prototype.paging = function () { /// <summary> /// 通过ajax获取分页数据并分页 /// </summary> /// <param name="dom" type="jQuery"> /// 要填充数据的dom,以及在dom下方生成分页条 /// </param> /// <param name="currentIndex" type="Int"> /// 获取第几页 /// </param> /// <param name="pageSize" type="Int"> /// 每页获取多少条数据 /// </param> /// <param name="pageCount" type="Int"> /// 分页条显示多少页 /// </param> /// <returns type="html" /> if (this.dom == "undefined" || $(this.dom).attr("class") != "ajaxRequest") { return; } var dom = this.dom; var currentIndex = 1; var pageSize = 10; var pageCount = 10; if (this.currentIndex != "undefined" && this.currentIndex.toString().isNumber()) { currentIndex = Number(this.currentIndex); } if (this.pageSize != "undefined" && this.pageSize.toString().isNumber()) { pageSize = Number(this.pageSize); } if (this.pageCount != "undefined" && this.pageCount.toString().isNumber()) { pageCount = Number(this.pageCount); } var total; //总共多少条数据 var totalpage; //总共多少页 var preNO; //分页条当前页之前显示多少页 var nextNO; //分页条当前页之后显示多少页 if (pageCount % 2 == 0) { preNO = pageCount / 2; nextNO = (pageCount / 2) - 1; } else { preNO = (pageCount / 2).toFix(0); nextNO = (pageCount / 2).toFix(0); } var url = $(dom).attr("destination"); $.get(url, { pageSize: pageSize, pageIndex: currentIndex }, function (msg) { var resultDom = $(msg); $(dom).html(resultDom); total = Number($(resultDom).find("table").attr("total")); if ((total / pageSize) > (total / pageSize).toFix(0)) { totalpage = ((total / pageSize) + 1).toFix(0); } else { totalpage = total / pageSize; } var pagingBar = $('<div class="paging"><ul></ul></div>'); if (currentIndex != 1) { $(pagingBar).children("ul").append($('<li index="1"><a href="#">首页</a></li>')); $(pagingBar).children("ul").append($('<li index="' + (currentIndex - 1) + '"><a href="#">上一页</a></li>')); } for (var i = 1; i <= pageCount && currentIndex - preNO + 1 <= totalpage && i <= totalpage; i++) { var index = i; if (currentIndex > preNO && (totalpage - currentIndex) >= nextNO) { index += (currentIndex - preNO); } else if (totalpage < pageCount) { } else { if (totalpage - currentIndex < nextNO) { index = totalpage - pageCount + index; } } $(pagingBar).children("ul").append($('<li index="' + index + '" ' + (index == currentIndex ? 'class="pagingli"' : '') + '><a href="#">' + index + '</a></li>')); } if (currentIndex != totalpage) { $(pagingBar).children("ul").append($('<li index="' + (currentIndex + 1) + '"><a href="#">下一页</a></li><li index="' + totalpage + '"><a href="#">末页</a></li>')); } $(pagingBar).children("ul").append($('<li>共 ' + total + '条,' + totalpage + '页</li>')); $(pagingBar).children().find("li").bind('click', function () { $(this).addClass("liloading"); getDataList($(dom), $(this).attr("index"), pageSize, pageCount); }); $(dom).next(".paging").remove(); $(dom).after(pagingBar); }); } function getDataList(dom, currentIndex, pageSize, pageCount) { var myAjax = new myAjaxOperation(); myAjax.dom = $(dom); myAjax.currentIndex = currentIndex; myAjax.pageSize = pageSize; myAjax.pageCount = pageCount; myAjax.paging(); }
3、获取的数据的格式,注意table有个自定义属性 总数total用来显示总共多少条数据
View Code
<div>
<table cellpadding="0" cellspacing="0" width="100%" total="@ViewBag.total">
@if (ViewBag.IsComplate == "0")
{
@*未完成*@
<thead>
<tr>
<td class="leftborder">
流程名称
</td>
<td>
流程交易号
</td>
<td>
操作名称
</td>
<td>
操作人
</td>
<td>
操作人部门
</td>
<td>
创建时间
</td>
<td class="rightborder">
已过时间
</td>
</tr>
</thead>
<tbody>
@{foreach (var item in ViewData["AllOpreation"] as List<AllOpreationModel>)
{
<tr>
<td>@item.ProcessName
</td>
<td>
<a href="javascript:void(0)" onclick="OpenCurrentProcess('@item.ProcessTransactionsNumber')">
[@item.ProcessTransactionsNumber]</a> @*<a href="javascript:void(0)" onclick="currentPro(1)">@item.ProcessTransactionsNumber</a>*@
</td>
<td>
@item.OperationName
</td>
<td>
<a href="javascript:void(0)">@item.Operator</a>
</td>
<td>@item.OperatorSector
</td>
<td>@item.CreationTime
</td>
<td>@item.Overtime
</td>
</tr>
}
}
</tbody>
}
else
{
@*已完成*@
<thead>
<tr>
<td class="leftborder">
流程名称
</td>
<td>
流程交易号
</td>
<td>
操作名称
</td>
<td>
操作交易号
</td>
<td>
操作结果
</td>
<td>
操作人
</td>
<td>
操作人部门
</td>
<td>
待办创建时间
</td>
<td>
完成时间
</td>
<td class="rightborder">
历时
</td>
</tr>
</thead>
<tbody>
@{foreach (var item in ViewData["AllOpreation"] as List<AllOpreationModel>)
{
<tr>
<td>@item.ProcessName
</td>
<td>
<a href="javascript:void(0)" onclick="OpenCurrentProcess('@item.ProcessTransactionsNumber')">
[@item.ProcessTransactionsNumber]</a> @*<a href="javascript:void(0)" onclick="currentPro(1)">@item.ProcessTransactionsNumber</a>*@
</td>
<td>@item.OperationName
</td>
<td>
@Html.ActionLink("[" + item.OperatingTransactionNumber + "]", "FormView", "../uWorkflow/Task", new { code = item.OperatingTransactionNumber }, new { target = "_blank" })
</td>
<td>@item.OperatingResult
</td>
<td>
<a href="javascript:void(0)">@item.Operator</a>
</td>
<td>@item.OperatorSector
</td>
<td>@item.CreationTime
</td>
<td>@item.CompletionTime
</td>
<td>@item.Overtime
</td>
</tr>
}
}
</tbody>
}
</table>
</div>
4、如何使用,@*之间的内容是MVC的注释,分页条自动生成,不用写的*@
html:
View Code
@*@Html.Action("_WaitingOperationPart", "Opreation")*@ <div class="ajaxRequest" destination="/uProcess/Opreation/_WaitingOperationPart" pageSize="10" pageCount="5"> @* This data list get by ajax. Please set class 'ajaxRequest' and set a custom attribute 'destination'. pageSize :每页获取多少条数据 pageCount : 分页条显示多少页 *@ </div> @*<div class="paging"> <ul> <li><a href="#">首页</a></li> <li><a href="#">上一页</a></li> <li class="pagingli"><a href="#">1</a></li> pagingli 当前页样式 <li class="liloading"><a href="#">2</a></li> liloading 点击后显示加载图标 <li><a href="#">3</a></li> <li><a href="#">4</a></li> <li><a href="#">5</a></li> <li><a href="#">下一页</a></li> <li><a href="#">末页</a></li> </ul> </div>*@
js:pageSize和pageCount也可以不初始化,默认都是10
$(".ajaxRequest").each(function (index) {
if (window["console"])
console.log(index);
var myAjax = new myAjaxOperation();
myAjax.dom = $(this);
myAjax.currentIndex = 1;
myAjax.pageSize = $(this).attr("pageSize").trim();
myAjax.pageCount = $(this).attr("pageCount").trim();
myAjax.paging();
});
5、截图赏析 样式自己调


6、不善写作,如果还是不懂就给我留言,我会在收到留言的第一时间回复你

浙公网安备 33010602011771号