using System; using System.Collections.Generic; using System.Linq; using System.Text; using POSV.Entity; using POSV.Utils; namespace POSV.Component { public class TableMerge { public static List Merge(int rows , int cols , List
dataSource , bool touchEnabled) { //启用触摸屏,不分页 if (touchEnabled) { return dataSource; } //移除可能存在的分页标识 dataSource.RemoveAll(x => Constant.PREV_PAGER.Equals(x.Name) || Constant.NEXT_PAGER.Equals(x.Name)); int pageSize = rows * cols; int totalCount = dataSource.Count; //启用分页 int pageCount = ((totalCount - 1) + (pageSize - 2) - 1) / (pageSize - 2); if(pageCount > 1) { int offset = 0; for (int page = 1; page <= pageCount; page++) { if (page == 1) { offset = page * pageSize - 1; var entity = new Table(); entity.Id = IdWorkerUtils.Instance.NextId(); entity.Name = Constant.NEXT_PAGER; entity.Pager = (page + 1); dataSource.Insert(offset , entity); } else if (page < pageCount) { offset = page * pageSize - 2; var entity = new Table(); entity.Id = IdWorkerUtils.Instance.NextId(); entity.Name = Constant.PREV_PAGER; entity.Pager = (page - 1); dataSource.Insert(offset , entity); offset++; entity = new Table(); entity.Id = IdWorkerUtils.Instance.NextId(); entity.Name = Constant.NEXT_PAGER; entity.Pager = (page + 1); dataSource.Insert(offset , entity); } else { var entity = new Table(); entity.Id = IdWorkerUtils.Instance.NextId(); entity.Name = Constant.PREV_PAGER; entity.Pager = (page - 1); dataSource.Add(entity); } } } return dataSource; } } }