进行移动并返回新的DataTable
///
/// 要移动的DataTable
/// 要移动的行(索引从1开始)
/// 要移动的行数
/// 是否上移(true为上移false为下移)
///
public DataTable GetNewTable(DataTable dt, int StartRow, int MoveCount, bool MoveUp)
{
#region 将DataTable按起始位置和移动及移动方向进行移动并返回新的DataTable
DataRow dr = dt.NewRow();
dr.ItemArray = dt.Rows[StartRow - 1].ItemArray;
int RowCount = dt.Rows.Count;
if (StartRow > RowCount)//移动的行在行数外面
return dt;
if (MoveUp)//上移
{
if(StartRow - MoveCount <= 0){ }
else
{
for (int i = 0; i < MoveCount; i++)
dt.Rows[StartRow - i - 1].ItemArray = dt.Rows[StartRow - i - 2].ItemArray;
dt.Rows[StartRow - MoveCount - 1].ItemArray = dr.ItemArray;
}
}
else//下移
{
if(StartRow + MoveCount > RowCount){ }
else
{
for (int i = 0; i < MoveCount; i++)
dt.Rows[StartRow + i - 1].ItemArray = dt.Rows[StartRow + i].ItemArray;
dt.Rows[StartRow + MoveCount - 1].ItemArray = dr.ItemArray;
}
}
return dt;
#endregion
}
///
/// 根据条件过滤表
///
/// 未过滤之前的表
/// 过滤条件
///
public DataTable GetNewTable(DataTable dt, string filter)
{
#region 根据条件过滤表
DataTable newTable = dt.Clone();
DataRow[] drs = dt.Select(filter);
foreach (DataRow dr in drs)
{
object[] arr = dr.ItemArray;
DataRow newrow = newTable.NewRow();
for (int i = 0; i < arr.Length; i++)
newrow[i] = arr[i];
newTable.Rows.Add(newrow);
}
return newTable;
#endregion
}
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/183242/viewspace-707920/ ,如需转载,请注明出处,否则将追究法律责任。