#region
using System;
using System.Data;
#endregion
namespace CSFrameworkV5.Common
{
///
/// 资料表工具类
///
public sealed class DataTableTools
{
///
/// 在资料表的第一行添加一条空行
///
///
public static void AddFirstEmptyRow(DataTable dt)
{
if (dt.Rows.Count == 0) return;
if (dt.Rows[0].IsNull(0)) return;
//插入一行空记录
var row = dt.NewRow();
dt.Rows.InsertAt(row, 0);
}
///
/// 添加合并的列数据
///
/// 数据表
/// 合并数据后的列名
/// 将要合并数据的字段名
public static void AddMergedColumn(DataTable dt,
string mergedColumnName, string[] fields)
{
if (dt.Columns[mergedColumnName] == null)
dt.Columns.Add(mergedColumnName, Type.GetType("System.String"));
var Combine = string.Empty;
foreach (DataRow dr in dt.Rows)
{
Combine = string.Empty;
foreach (var Col in fields)
if (string.IsNullOrEmpty(Combine))
Combine = ConvertEx.ToString(dr[Col]);
else
Combine += " - " + ConvertEx.ToString(dr[Col]);
dr[mergedColumnName] = Combine;
}
}
///
/// 合并字段的数据,返回格式:管理员(admin)
///
///
///
/// 名称字段
/// 括号内编号字段
public static void AddMergedColumn(DataTable dt,
string mergedColumnName, string nameField, string quoteField)
{
if (dt.Columns[mergedColumnName] == null)
dt.Columns.Add(mergedColumnName, Type.GetType("System.String"));
var Combine = string.Empty;
foreach (DataRow dr in dt.Rows)
{
Combine = ConvertEx.ToString(dr[nameField]) + " (" +
ConvertEx.ToString(dr[quoteField]) + ")";
dr[mergedColumnName] = Combine;
}
dt.AcceptChanges();
}
///
/// 调换两行之间的位置
///
///
///
///
///
public static void SwapRow(int index1, int index2, DataTable dt)
{
var dr = dt.NewRow();
var row = dt.Rows[index1];
dr.ItemArray = row.ItemArray;
dt.Rows.InsertAt(dr, index2);
dt.Rows.Remove(row);
dt.AcceptChanges();
}
///
/// 更新表指定字段的数据
///
/// 资料表
/// 字段名
/// 数据
public static void UpdateFieldValue(DataTable table, string field,
object value)
{
foreach (DataRow R in table.Rows) R[field] = value;
}
///
/// 更新表指定字段的排序号码
///
/// 资料表
/// 报序字段名
public static void UpdateSortField(DataTable table, string sortField)
{
var i = 1;
foreach (DataRow R in table.Rows)
{
R[sortField] = i;
i++;
}
table.AcceptChanges();
}
}
}