#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(); } } }