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

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

C#教程 ASP.NET教程 C#视频教程程序源码享受不尽 C#问题入口 ASP.NET问题入口

【C#问题提交】 社群合作 申请版主 程序开发 【远程协助】 每天乐一乐 每日签到 【承接毕业设计】 面试-葵花宝典下载

官方一群:

官方二群:

查看: 187|回复: 0

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

[复制链接]
  • TA的每日心情
    开心
    昨天 08:52
  • 签到天数: 1523 天

    [LV.Master]伴坛终老

    3909

    主题

    5827

    帖子

    10万

    积分

    管理员

    IBC编程社区-原道楠

    Rank: 9Rank: 9Rank: 9

    积分
    105017

    推广达人突出贡献优秀版主荣誉管理论坛元老

    发表于 2019-8-13 18:03:32 | 显示全部楼层 |阅读模式

    马上加入IBC,查看更多教程

    您需要 登录 才可以下载或查看,没有帐号?立即注册

    x

    如何判断当前修改过的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
    免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则