c# 更改表格字段

       在实际情况中为了减少数据库的压力和提高性能会将一些字段的内容在数据库以代码的形式存储,而现实到用户界面的时候就需要用户能看懂的形式代替,这样你会发现表格字段的数据类型有改变,简单的更改后台返回的json串显然是不行的。怎么办呢?

      显然表格的结果需要改变,在c#里提供了Clone的方法,我现在的思路是把表格字段的数据结构通过Clone以及更新必要字段的数据类型来实现。 

   /// <summary>
        /// 将修改表的字段的类型并赋值
        /// </summary>
        /// <param name="dt">需要转换的表</param>
        /// <returns>转换后的表</returns>
        private DataTable UpdateDateTable(DataTable dt)
        {
            DataTable dtResult = new DataTable();

            //克隆表结构
            dtResult = dt.Clone();
            foreach (DataColumn col in dtResult.Columns)
            {
                if (col.ColumnName == "event_level")
                {
                    //修改列类型
                    col.DataType = typeof(String);
                }

                if (col.ColumnName == "event_flag")
                {
                    //修改列类型
                    col.DataType = typeof(String);

                }
                if (col.ColumnName == "event_confirm_flag")
                {
                    //修改列类型
                    col.DataType = typeof(String);
                }
            }
            foreach (DataRow row in dt.Rows)
            {
                DataRow newrow = dtResult.NewRow();
                newrow["id"] = row["id"];
                newrow["event_name"] = row["event_name"];
                //修改事件级别记录值


                int eventLevels = int.Parse(row["event_level"].ToString());
                switch (eventLevels)
                {
                    case 1: newrow["event_level"] = "提示"; break;
                    case 2: newrow["event_level"] = "警告"; break;
                    case 3: newrow["event_level"] = "次要"; break;
                    case 4: newrow["event_level"] = "重要"; break;
                    case 5: newrow["event_level"] = "紧急"; break;

                }

                newrow["event_trigger_time"] = row["event_trigger_time"];
                newrow["event_alarm_trigger_value"] = row["event_alarm_trigger_value"];
                newrow["event_resume_time"] = row["event_resume_time"];
                newrow["event_resume_trigger_value"] = row["event_resume_trigger_value"];
                //修改事件状态记录值


                int eventflag = int.Parse(row["event_flag"].ToString());
                switch (eventflag)
                {
                    case 1: newrow["event_flag"] = "告警"; break;
                    case 2: newrow["event_flag"] = "恢复"; break;

                }
                int confirmflag = int.Parse(row["event_confirm_flag"].ToString());
                switch (confirmflag)
                {
                    case 0: newrow["event_confirm_flag"] = "未确认"; break;
                    case 1: newrow["event_confirm_flag"] = "已确认"; break;

                }
                newrow["event_confim_time"] = row["event_confim_time"];
                newrow["event_confimer"] = row["event_confimer"];
                dtResult.Rows.Add(newrow);
            }
            return dtResult;
        }
    通过新旧表的替换,很容易将友好的数据显示给用户。

     工作中遇到的问题认真的去做,发现会有很多新的尝试和挑战,所以每天都有进步。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值