1 //新建datatable存放返回值
2
3 DataTable ret = new DataTable();
4
5 ret.Columns.Add("nodeid");
6
7 ///
8 ... 在datatable中添加列
9 ///
10 ret.Columns.Add("opinion");
11 ret.PrimaryKey = new DataColumn[] { ret.Columns["nodeid"] };//设置主键
12 List<string> lst = new List<string>();//新建list存放已编辑的 主键
13 for (int i = 0; i < dateList.Count; i++)//循环传入值
14 {
15 Hashtable ht = dateList[i];
16 string nodeid = ht["nodeid"].ToString();
17 if (!lst.Contains(nodeid))//标记已编辑主键
18 {
19 lst.Add(nodeid);
20 DataRow dr = ret.NewRow();
21 dr["nodeid"] = nodeid;
22 dr["actionname"] = ht["actionname"].ToString();
23 dr["submittime"] = ht["submittime"].ToString();
24 dr["nodename"] = ht["nodename"].ToString();
25 SetVarToDataRow(ht, dr);
26 ret.Rows.Add(dr);//追加到返回值中
27 }
28 else
29 {
30 DataRow dr = ret.Rows.Find(nodeid);//查找到已编辑过的行值
31 SetVarToDataRow(ht, dr);
32 }
33 }
34 ret.DefaultView.Sort = "submittime DESC";//排序
35 DataView dataView = ret.DefaultView;
36 ret = dataView.ToTable();
37 return ret;
38 //根据key值标记编辑对应值
39 private static void SetVarToDataRow(Hashtable ht, DataRow dr)
40 {
41 switch (ht["key"].ToString())
42 {
43 case "opinion":
44 dr["opinion"] = ht["value"].ToString();
45 break;
46 case "checkusername":
47 dr["checkusername"] = ht["value"].ToString();
48 break;
49 case "checkuseragencyname":
50 dr["checkuseragencyname"] = ht["value"].ToString();
51 break;
52 case "checkuserpostname":
53 dr["checkuserpostname"] = ht["value"].ToString();
54 break;
55 default:
56 break;
57 }
58 }