1、将datatable分页为指定行数的dataset集合
/// <summary>
/// 将datatable分页为指定行数的dataset集合/// </summary>
/// <param name="dtblOriginal">初始datatable</param>
/// <param name="intPageSize">行数</param>
/// <returns></returns>
public DataSet FormatDataTableToDS(DataTable dtblOriginal, int intPageSize)
{
int intFlag = 0;
DataSet ds = new DataSet();
// 分页数循环
for (int i = 0; i < dtblOriginal.Rows.Count; i += intPageSize)
{
DataTable dtblTemp = dtblOriginal.Clone();
for (int j = 0; j < intPageSize; j++)
{
DataRow dr = dtblTemp.NewRow();
if (intFlag == 1)
{
break;
}
for (int k = 0; k < dtblTemp.Columns.Count; k++)
{
if ((i + j) < dtblOriginal.Rows.Count)
{
if (null != dtblOriginal.Rows[i + j][k] && DBNull.Value != dtblOriginal.Rows[i + j][k])
{
dr[k] = dtblOriginal.Rows[i + j][k];
}
else
{
dr[k] = (object)"";
}
}
else
{
intFlag = 1;
break;
}
}
if (intFlag!=1)
{
dtblTemp.Rows.Add(dr);
}
}
ds.Tables.Add(dtblTemp);
}
return ds;
}
2.前辈写的:
private DataSet outhtml(DataTable dt)
{
DataSet ds = new DataSet();
if (dt != null)
{
double r = Math.Ceiling(dt.Rows.Count / 14.0);
int k = Convert.ToInt32(r);
int start = 0;
int end = 0;
for (int i = 0; i < k; i++)
{
start = 14 * i;
end = 14 * i + 14;
//DataTable newtable = createtable(start, end, dt);
//ds.Tables.Add(newtable);
}
}
return ds;
}
对比来看,我写的比较注意通用性。前辈写的很简练,通用性稍差一些,但是效率高。