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.

78 lines
2.4 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);
int offset = 0;
int i = 1;
for (; i < pageCount; i++)
{
offset += (pageSize - 1);
if(i == 1)
{
//第一页,最后一位加下一页
Table entity = new Table();
entity.Id = IdWorkerUtils.Instance.NextId();
entity.Name = Constant.NEXT_PAGER;
entity.Pager = i + 1;
dataSource.Insert(offset , entity);
}
else
{
//中间页,最后加前后
var entity = new Table();
entity.Id = IdWorkerUtils.Instance.NextId();
entity.Name = Constant.PREV_PAGER;
entity.Pager = i - 1;
dataSource.Insert(offset - 1, entity);
entity = new Table();
entity.Id = IdWorkerUtils.Instance.NextId();
entity.Name = Constant.NEXT_PAGER;
entity.Pager = i + 1;
dataSource.Insert(offset, entity);
}
offset ++;
}
if (pageCount > 1)
{
//最后一页,最后一位加上一页
var entity = new Table();
entity.Id = IdWorkerUtils.Instance.NextId();
entity.Name = Constant.PREV_PAGER;
entity.Pager = i - 1;
dataSource.Insert(offset, entity);
}
return dataSource;
}
}
}