请选择 进入手机版 | 继续访问电脑版

马上加入IBC程序猿 各种源码随意下,各种教程随便看! 注册 每日签到 加入编程讨论群

C#教程 ASP.NET教程 C#视频教程程序源码享受不尽 C#技术求助 ASP.NET技术求助

【源码下载】 社群合作 申请版主 程序开发 【远程协助】 每天乐一乐 每日签到 【承接外包项目】 面试-葵花宝典下载

官方一群:

官方二群:

如何判断当前修改过的datatable的某一列值是否为int型或double类型

[复制链接]
查看2316 | 回复0 | 2019-8-13 18:03:32 | 显示全部楼层 |阅读模式

如何判断当前修改过的datatable的某一列值是否为int型或double类型

本日在做datatable数据验证时碰到要对datatable的列数据进行数据类型校验,因此记录一下本人校验的方法,如果还有更简单的校验方式,欢迎大家踊跃分享,不胜感激。

  1. <code>/*
  2. 取得改变过的datatable,注意不能把原有的datatable执行AcceptChanges()方法,先执行Copy()新得到一个
  3. 当前经过修改后datatable
  4. */
  5. DataTable dtTemp = ((DataTable)gridControl1.DataSource).Copy();
  6. dtTemp.AcceptChanges();
  7. //判断datatable是否为空
  8. if (dtTemp.Rows.Count == 0)
  9. {
  10. if(CommonFunction.ShowMsgBox("检测到复称列表为空,是否直接保存", MessageBoxButtons.YesNo, 0) == DialogResult.No)
  11. {
  12. return false;
  13. }
  14. }
  15. //以下是判断当前经过修改后datatable是否有空值并若为空值则校验不通过,若不为空值再进行数据类型的校验
  16. if (dtTemp.Rows.Count > 0)
  17. {
  18. foreach (DataRow dr in ((DataTable)gridControl1.DataSource).Rows)
  19. {
  20. if (CommonFunction.Trim(Convert.ToString(dr["序号"]))=="")
  21. {
  22. CommonFunction.ShowMsgBox("检测到复称列表有未填项");
  23. return false;
  24. }
  25. /*
  26. 通过int.TryParse(string s out Int32 result)进行整数类型的校验
  27. 该方法传入两个参数,第一个是字符串类型,第二个是转化成功后输出的整型变量
  28. 如果转化成功则该方法返回true并输出转化后的结果,该结果可进一步被使用来判断数值范围
  29. 如果转化失败则该方法返回false,即该datatable的该单元格中的内容不数据类型错误
  30. */
  31. int iRecordSeq;
  32. if(int.TryParse(Convert.ToString(dr["序号"]),out iRecordSeq) == false || iRecordSeq < 1)
  33. {
  34. CommonFunction.ShowMsgBox("复称列表序号必须为大于0的整数");
  35. return false;
  36. }
  37. if (CommonFunction.Trim(Convert.ToString(dr["桶皮"])) == "")
  38. {
  39. CommonFunction.ShowMsgBox("检测到复称列表有未填项");
  40. return false;
  41. }
  42. double dTaerWeight;
  43. if (double.TryParse(Convert.ToString(dr["桶皮"]), out dTaerWeight) == false || dTaerWeight < 1)
  44. {
  45. CommonFunction.ShowMsgBox("复称列表桶皮必须为大于0的数字");
  46. return false;
  47. }
  48. if (CommonFunction.Trim(Convert.ToString(dr["毛重"])) == "")
  49. {
  50. CommonFunction.ShowMsgBox("检测到复称列表有未填项");
  51. return false;
  52. }
  53. double dGrossWeight;
  54. if (double.TryParse(Convert.ToString(dr["毛重"]), out dGrossWeight) == false || dGrossWeight < 1)
  55. {
  56. CommonFunction.ShowMsgBox("复称列表毛重必须为大于0的数字");
  57. return false;
  58. }
  59. if (CommonFunction.Trim(Convert.ToString(dr["单位"])) == "")
  60. {
  61. CommonFunction.ShowMsgBox("检测到复称列表有未填项");
  62. return false;
  63. }
  64. }
  65. }
  66. //遍历当前修改过后的datatable,看序号这一列是否存在重复的值
  67. foreach (DataRow dr in dtTemp.Rows)
  68. {
  69. int iRecordSeq=Convert.ToInt32(dr["序号"]);
  70. if (dtTemp.Select("序号=" + iRecordSeq).Count() > 1)
  71. {
  72. CommonFunction.ShowMsgBox("检测到复称列表有重复的序号,请检查无误后操作");
  73. return false;
  74. }
  75. }
  76. return true;</code>
复制代码

至此,校验完成。


来源:https://www.cnblogs.com/ubantu/p/11326461.html
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则