/// <summary> /// 新建内容页 /// </summary> /// <param name="modelDC">所在列</param> /// <param name="PageID">前一页页编号</param> /// <param name="PageIndex">页号</param> /// <returns></returns> public static ContentPageEntity NewContentPage(DataColumnEntity modelDC, long PageID, int PageIndex) { long NextPageID = DataFileManage.GetEmptyPageID(modelDC.Table.DataFile); //修改前一页 WriteNextPageID(new DataPageEntity { DataFile = modelDC.Table.DataFile, ID = PageID }, NextPageID); //创建数据分页 byte[] array = new byte[Config.PAGE_SIZE]; array[0] = Convert.ToByte(EPageType.DataContent); DataPageEntity modelDP = new DataPageEntity { DataFile = modelDC.Table.DataFile, ID = NextPageID, Content = array }; DataPageManage.Write(modelDP); modelDP.Content = null; //创建实体 ContentPageEntity modelCP = new ContentPageEntity { Column = modelDC, DataPage=modelDP, PageIndex = PageIndex, Contents = new List<DataContentEntity>() }; return modelCP; }
/// <summary> /// 读取内容页 /// </summary> /// <param name="modelDP"></param> /// <returns></returns> public static ContentPageEntity ReadContentPage(DataPageEntity modelDP,ContentPageEntity modelCP) { DataPageManage.Read(modelDP); modelCP.DataPage = modelDP; modelCP.FromBytes(modelDP.Content); modelDP.Content = null; return modelCP; }
/// <summary> /// 根据行号获取某数据分页 /// </summary> /// <param name="modelDC"></param> /// <param name="index"></param> /// <returns></returns> public static ContentPageEntity GetPage(DataColumnEntity modelDC, int RowIndex) { long ContentPageID = modelDC.ContentPageID; int PageIndex = 0; ContentPageEntity modelCP = new ContentPageEntity(); if (RowIndex / modelDC.PageMaxCount == 0)//第一页 { modelCP = ReadContentPage(new DataPageEntity { DataFile = modelDC.Table.DataFile, ID = ContentPageID },new ContentPageEntity { Column = modelDC, PageIndex = PageIndex }); } else//不是第一页 { //遍历寻找前一页编号 for (int i = 0; i <= RowIndex / modelDC.PageMaxCount - 2; i++) { ContentPageID = ReadNextPageID(new DataPageEntity { DataFile = modelDC.Table.DataFile, ID = ContentPageID }); PageIndex++; } long NextPageID = ReadNextPageID(new DataPageEntity { DataFile = modelDC.Table.DataFile, ID = ContentPageID }); if (NextPageID > 0)//有当前页 { ContentPageID = NextPageID; modelCP = ReadContentPage(new DataPageEntity { DataFile = modelDC.Table.DataFile, ID = ContentPageID }, new ContentPageEntity { Column = modelDC, PageIndex = PageIndex }); } else//页不存在创建新页 { modelCP = NewContentPage(modelDC, ContentPageID, PageIndex); } } return modelCP; }