返回的是list集合:
/// <summary>
/// 返回合同的款项信息
/// </summary>
/// <param name="pagesize"></param>
/// <param name="currentpage"></param>
/// <param name="totalcount"></param>
/// <returns></returns>
public List<Contract.Model.MoneyLog> GetContractMoneyLogs(int pagesize, int currentpage, out int totalcount)
{
try
{
totalcount = 0;
if (this.ContractID == 0) throw new ContractException("合同编号不存在");
List<Contract.Model.MoneyLog> listm = CClient.GetContractMoneyLogList(this.ContractID);
if (listm != null)
{
totalcount = listm.Count;
//记录日志
string msg = string.Format("查询合同款项信息 记录数:{0}", listm.Count);
Model.ContractLog L = new ContractLog(this.ContractID, msg, this.UserID);
CClient.AddContractLogToDB(L);
//对返回的listm集合进行分页操作
return ((List<Contract.Model.MoneyLog>)FilterList(pagesize, currentpage, listm));
}
return null;
}
catch (Exception ex)
{
throw ex;
}
finally
{
CClient.Close();
}
}
/// <summary>
/// 根据总条数和当前页,返回当前页的list
/// </summary>
/// <param name="pagesize"></param>
/// <param name="currentpage"></param>
/// <param name="list"></param>
/// <returns></returns>
private List<T> FilterList<T>(int pagesize, int currentpage, List<T> list)
{
try
{
int totalcount = list.Count;
if (totalcount <= pagesize)
return list;
int totalpage = totalcount / pagesize + ((totalcount % pagesize == 0) ? 0 : 1);
int querysize = pagesize;
//如果是最后一页,需要计算一下最后剩余的记录条数
if (currentpage >= totalpage) querysize = (totalcount % pagesize == 0) ? pagesize : totalcount % pagesize;
return list.GetRange((currentpage - 1) * pagesize, querysize);
}
catch (Exception ex)
{
throw ex;
}
}
返回的是DataTable
/// <summary>
/// 获取待审批或已审批合同列表,此方法全部由王君添加
/// </summary>
/// <param name="userid">当前登录账号的 userid</param>
/// <param name="auditstate">审核状态:未审 0,已审 1</param>
/// <returns></returns>
public DataTable SearchAuditContracts(int auditstate, int pageIndex, int pageSize, out int totalcount)
{
try
{
totalcount = 0;
DataTable results = CClient.SearchAuditContracts(this.UserID, auditstate);
if (results.Rows.Count > 0)
{
//记录日志
string msg = string.Format("查询合同审批列表信息 记录数:{0}", results.Rows.Count);
Model.ContractLog L = new ContractLog(this.ContractID, msg, this.UserID);
CClient.AddContractLogToDB(L);
totalcount = results.Rows.Count;
return Utility.SplitDataTable(results, pageIndex, pageSize);
}
return results;
}
catch (Exception ex)
{
throw ex;
}
finally
{
CClient.Close();
}
}
/// <summary>
/// 根据索引和pagesize返回记录
/// </summary>
/// <param name="dt">记录集 DataTable</param>
/// <param name="PageIndex">当前页</param>
/// <param name="pagesize">一页的记录数,此方法全部由王君添加</param>
/// <returns></returns>
public static DataTable SplitDataTable(DataTable dt, int PageIndex, int PageSize)
{
int totalcount = dt.Rows.Count;
if (PageIndex == 0)
return dt;
DataTable newdt = dt.Clone();
//newdt.Clear();
int rowbegin = (PageIndex - 1) * PageSize;
int rowend = PageIndex * PageSize;
if (rowbegin >= dt.Rows.Count)
return newdt;
if (rowend > dt.Rows.Count)
rowend = dt.Rows.Count;
for (int i = rowbegin; i <= rowend - 1; i++)
{
DataRow newdr = newdt.NewRow();
DataRow dr = dt.Rows[i];
foreach (DataColumn column in dt.Columns)
{
newdr[column.ColumnName] = dr[column.ColumnName];
}
newdt.Rows.Add(newdr);
}
return newdt;
}