You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
81 lines
2.5 KiB
C#
81 lines
2.5 KiB
C#
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<Table> Merge(int rows , int cols , List<Table> 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;
|
|
}
|
|
}
|
|
}
|