//#region MobileDataList MobileDataList = function (divid) { this.ParentElement = $(document); //要加入的父容器 this.id = divid; this.ApplicationPath = ""; var My = this; this.IsSlide = true; //是否滑动 this.PageIndex = 1; this.PageSize = 10; this.PageCount = 0; this.RowCount = 0; this.LoadTitleID = "div_more"; this.CellTemplate = ""; this.DataSource = new Array(); //接受一个数组对象 var EventHandler = new Sys.EventHandlerList(); var PagerFlag=false; //#region 初始化 this.Init = function () { WindowSlide(); //滑动 $("#" + My.LoadTitleID + " span").click(function () { var title = $(this).text(); if (title == "没有更多的数据") return; PagerFlag = true; My.PageIndex +=1; OnPageIndexChanged(); }); } //#endregion //#region 绑定数据源 this.DataBind = function (source) { var html = new Sys.StringBuilder(); $(source).each(function () { var index = My.DataSource.length; Array.add(My.DataSource, this); var temp = this; var controlHtml = My.CellTemplate; StringArray = controlHtml.match(new RegExp("\{Bind [^}]*\}", "ig")); if (StringArray != null) { for (var i = 0; i < StringArray.length; i++) { var ss = StringArray[i].substr(6, StringArray[i].length - 7).split(","); //分隔字符串 if (ss[0] == "index") { controlHtml = controlHtml.replace("{Bind " + ss[0] + "}", index); continue; } var value = temp[ss[0]]; //数据源的值 if (value == null) value = ""; if (this.CellFormatter) value = this.CellFormatter(value); if (ss.length == 1) { //不需要格式化 controlHtml = controlHtml.replace("{Bind " + ss[0] + "}", value) } else { if (value == "") { controlHtml = controlHtml.replace("{Bind " + ss[0] + "," + ss[1] + "}", value); } else { var FormatValue = ""; if (ss[1] != "encode") { if (ss[1].length == 2 && ss[1].substr(0, 1) == "d") { FormatValue = parseFloat(value.localeFormat("n" + ss[1].substr(1, 1))).localeFormat("d"); } else { FormatValue = value.localeFormat(ss[1]); } } else { FormatValue = escape(value); } controlHtml = controlHtml.replace("{Bind " + ss[0] + "," + ss[1] + "}", FormatValue) } } } } controlHtml = controlHtml.replace(new RegExp("checked='false'", "ig"), ""); controlHtml = controlHtml.replace(new RegExp("checked=''", "ig"), ""); html.append(controlHtml); }); if (My.PageCount > 1) { //$("#" + My.LoadTitleID).hide(); if (My.PageIndex == My.PageCount) { $("#" + My.LoadTitleID + " span").text("没有更多的数据"); $("#" + My.LoadTitleID + " .weui-loading").hide(); } else { $("#" + My.LoadTitleID + " .weui-loading").show(); $("#" + My.LoadTitleID + " span").text("点击加载更多"); } } else { //$("#" + My.LoadTitleID).hide(); $("#" + My.LoadTitleID + " span").text("没有更多的数据"); $("#" + My.LoadTitleID + " .weui-loading").hide(); } if (My.PageIndex == 1) { $("#" + My.id, My.ParentElement).html(html.toString()); } else { $("#" + My.id, My.ParentElement).append(html.toString()); } } //#endregion //#region 获取行对应数据源对象 this.Get_Model = function (RowIndex) { return this.DataSource[RowIndex]; } //#endregion //#region 设置总行数 this.Set_RowCount = function (RowCount) { PagerFlag = false; My.RowCount = RowCount; if (RowCount == 0) { My.PageIndex = 1; My.PageCount = 0; } else { My.PageCount = Math.ceil(My.RowCount / My.PageSize); } } //#endregion //#region 获取总页数 this.Get_PageIndex = function () { if (My.PageIndex > 1) { if (My.PagerFlag == false) { My.PageIndex = 1; } } return My.PageIndex; } //#endregion //#region 获取每页行数 this.Get_PageSize = function () { return My.PageSize; } //#endregion //#region 分页改变事件 this.add_PageIndexChanged = function (handler) { EventHandler.addHandler('PageIndexChanged', handler); } //#endregion //#region 分页改变事件 function OnPageIndexChanged() { var h = EventHandler.getHandler('PageIndexChanged'); if (h) h(this, Sys.EventArgs.Empty); } //#endregion //#region 滑动删除 function WindowSlide() { if (My.IsSlide == false) return; window.addEventListener('load', function () { var initX; //触摸位置 var moveX; //滑动时的位置 var X = 0; //移动距离 var objX = 0; //目标对象位置 var start; window.addEventListener('touchstart', function (event) { var touches = event.touches[0]; start = { x: touches.pageX, // 横坐标 y: touches.pageY // 纵坐标 }; // event.preventDefault(); var obj = event.target.parentNode; var obj2 = event.target.parentNode.parentNode; var obj3 = event.target.parentNode.parentNode.parentNode; if (obj.className == "list-li") { initX = event.targetTouches[0].pageX; objX = (obj.style.WebkitTransform.replace(/translateX\(/g, "").replace(/px\)/g, "")) * 1; } else if (obj2.className == "list-li") { initX = event.targetTouches[0].pageX; objX = (obj2.style.WebkitTransform.replace(/translateX\(/g, "").replace(/px\)/g, "")) * 1; } else if (obj3.className == "list-li") { initX = event.targetTouches[0].pageX; objX = (obj3.style.WebkitTransform.replace(/translateX\(/g, "").replace(/px\)/g, "")) * 1; } if (objX == 0) { window.addEventListener('touchmove', function (event) { //event.preventDefault(); var touches = event.touches[0]; delta = { x: touches.pageX - start.x, y: touches.pageY - start.y }; // 横向位移大于纵向位移,阻止纵向滚动 if (Math.abs(delta.x) > Math.abs(delta.y)) { event.preventDefault(); } var obj = event.target.parentNode; var obj2 = event.target.parentNode.parentNode; var obj3 = event.target.parentNode.parentNode.parentNode; if (obj.className == "list-li") { moveX = event.targetTouches[0].pageX; X = moveX - initX; if (X >= 0) { obj.style.WebkitTransform = "translateX(" + 0 + "px)"; } else if (X < 0) { var l = Math.abs(X); obj.style.WebkitTransform = "translateX(" + -l + "px)"; if (l > 80) { l = 80; obj.style.WebkitTransform = "translateX(" + -l + "px)"; } } } else if (obj2.className == "list-li") { moveX = event.targetTouches[0].pageX; X = moveX - initX; if (X >= 0) { obj2.style.WebkitTransform = "translateX(" + 0 + "px)"; } else if (X < 0) { var l = Math.abs(X); obj2.style.WebkitTransform = "translateX(" + -l + "px)"; if (l > 80) { l = 80; obj2.style.WebkitTransform = "translateX(" + -l + "px)"; } } } else if (obj3.className == "list-li") { moveX = event.targetTouches[0].pageX; X = moveX - initX; if (X >= 0) { obj3.style.WebkitTransform = "translateX(" + 0 + "px)"; } else if (X < 0) { var l = Math.abs(X); obj3.style.WebkitTransform = "translateX(" + -l + "px)"; if (l > 80) { l = 80; obj3.style.WebkitTransform = "translateX(" + -l + "px)"; } } } }); } else if (objX < 0) { window.addEventListener('touchmove', function (event) { // event.preventDefault(); var obj = event.target.parentNode; var obj2 = event.target.parentNode.parentNode; var obj3 = event.target.parentNode.parentNode.parentNode; if (obj.className == "list-li") { moveX = event.targetTouches[0].pageX; X = moveX - initX; if (X >= 0) { var r = -80 + Math.abs(X); obj.style.WebkitTransform = "translateX(" + r + "px)"; if (r > 0) { r = 0; obj.style.WebkitTransform = "translateX(" + r + "px)"; } } else { //向左滑动 obj.style.WebkitTransform = "translateX(" + -80 + "px)"; } } else if (obj2.className == "list-li") { moveX = event.targetTouches[0].pageX; X = moveX - initX; if (X >= 0) { var r = -80 + Math.abs(X); obj2.style.WebkitTransform = "translateX(" + r + "px)"; if (r > 0) { r = 0; obj2.style.WebkitTransform = "translateX(" + r + "px)"; } } else { //向左滑动 obj2.style.WebkitTransform = "translateX(" + -80 + "px)"; } } else if (obj3.className == "list-li") { moveX = event.targetTouches[0].pageX; X = moveX - initX; if (X >= 0) { var r = -80 + Math.abs(X); obj3.style.WebkitTransform = "translateX(" + r + "px)"; if (r > 0) { r = 0; obj3.style.WebkitTransform = "translateX(" + r + "px)"; } } else { //向左滑动 obj3.style.WebkitTransform = "translateX(" + -80 + "px)"; } } }); } }) window.addEventListener('touchend', function (event) { // event.preventDefault(); var obj = event.target.parentNode; var obj2 = event.target.parentNode.parentNode; var obj3 = event.target.parentNode.parentNode.parentNode; if (obj.className == "list-li") { objX = (obj.style.WebkitTransform.replace(/translateX\(/g, "").replace(/px\)/g, "")) * 1; if (objX > -40) { obj.style.WebkitTransform = "translateX(" + 0 + "px)"; objX = 0; } else { obj.style.WebkitTransform = "translateX(" + -80 + "px)"; objX = -80; } } else if (obj2.className == "list-li") { objX = (obj2.style.WebkitTransform.replace(/translateX\(/g, "").replace(/px\)/g, "")) * 1; if (objX > -40) { obj2.style.WebkitTransform = "translateX(" + 0 + "px)"; objX = 0; } else { obj2.style.WebkitTransform = "translateX(" + -80 + "px)"; objX = -80; } } else if (obj3.className == "list-li") { objX = (obj3.style.WebkitTransform.replace(/translateX\(/g, "").replace(/px\)/g, "")) * 1; if (objX > -40) { obj3.style.WebkitTransform = "translateX(" + 0 + "px)"; objX = 0; } else { obj3.style.WebkitTransform = "translateX(" + -80 + "px)"; objX = -80; } } }) }) } //#endregion } //#endregion