1
yhj
2024-07-24 5e5d945e91568b973faa27d8ab0bcef99fc4a6c5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
#region
 
using System;
using System.Data;
 
#endregion
 
namespace CSFrameworkV5.Common
{
    /// <summary>
    ///     资料表工具类
    /// </summary>
    public sealed class DataTableTools
    {
        /// <summary>
        ///     在资料表的第一行添加一条空行
        /// </summary>
        /// <param name="dt"></param>
        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);
        }
 
        /// <summary>
        ///     添加合并的列数据
        /// </summary>
        /// <param name="dt">数据表</param>
        /// <param name="mergedColumnName">合并数据后的列名</param>
        /// <param name="fields">将要合并数据的字段名</param>
        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;
            }
        }
 
        /// <summary>
        ///     合并字段的数据,返回格式:管理员(admin)
        /// </summary>
        /// <param name="dt"></param>
        /// <param name="mergedColumnName"></param>
        /// <param name="nameField">名称字段</param>
        /// <param name="quoteField">括号内编号字段</param>
        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();
        }
 
        /// <summary>
        ///     调换两行之间的位置
        /// </summary>
        /// <param name="index1"></param>
        /// <param name="index2"></param>
        /// <param name="dt"></param>
        /// <returns></returns>
        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();
        }
 
        /// <summary>
        ///     更新表指定字段的数据
        /// </summary>
        /// <param name="table">资料表</param>
        /// <param name="field">字段名</param>
        /// <param name="value">数据</param>
        public static void UpdateFieldValue(DataTable table, string field,
            object value)
        {
            foreach (DataRow R in table.Rows) R[field] = value;
        }
 
        /// <summary>
        ///     更新表指定字段的排序号码
        /// </summary>
        /// <param name="table">资料表</param>
        /// <param name="sortField">报序字段名</param>
        public static void UpdateSortField(DataTable table, string sortField)
        {
            var i = 1;
            foreach (DataRow R in table.Rows)
            {
                R[sortField] = i;
                i++;
            }
 
            table.AcceptChanges();
        }
    }
}