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

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

/*
取得改变过的datatable,注意不能把原有的datatable执行AcceptChanges()方法,先执行Copy()新得到一个
当前经过修改后datatable
*/
DataTable dtTemp = ((DataTable)gridControl1.DataSource).Copy();
dtTemp.AcceptChanges();
//判断datatable是否为空
if (dtTemp.Rows.Count == 0)
{
if(CommonFunction.ShowMsgBox("检测到复称列表为空,是否直接保存", MessageBoxButtons.YesNo, 0) == DialogResult.No)
{
return false;
}
}
//以下是判断当前经过修改后datatable是否有空值并若为空值则校验不通过,若不为空值再进行数据类型的校验
if (dtTemp.Rows.Count > 0)
{
foreach (DataRow dr in ((DataTable)gridControl1.DataSource).Rows)
{
if (CommonFunction.Trim(Convert.ToString(dr["序号"]))=="")
{
CommonFunction.ShowMsgBox("检测到复称列表有未填项");
return false;
}
/*
通过int.TryParse(string s out Int32 result)进行整数类型的校验
该方法传入两个参数,第一个是字符串类型,第二个是转化成功后输出的整型变量
如果转化成功则该方法返回true并输出转化后的结果,该结果可进一步被使用来判断数值范围
如果转化失败则该方法返回false,即该datatable的该单元格中的内容不数据类型错误
*/
int iRecordSeq;
if(int.TryParse(Convert.ToString(dr["序号"]),out iRecordSeq) == false || iRecordSeq < 1)
{
CommonFunction.ShowMsgBox("复称列表序号必须为大于0的整数");
return false;
}
if (CommonFunction.Trim(Convert.ToString(dr["桶皮"])) == "")
{
CommonFunction.ShowMsgBox("检测到复称列表有未填项");
return false;
}
double dTaerWeight;
if (double.TryParse(Convert.ToString(dr["桶皮"]), out dTaerWeight) == false || dTaerWeight < 1)
{
CommonFunction.ShowMsgBox("复称列表桶皮必须为大于0的数字");
return false;
}
if (CommonFunction.Trim(Convert.ToString(dr["毛重"])) == "")
{
CommonFunction.ShowMsgBox("检测到复称列表有未填项");
return false;
}
double dGrossWeight;
if (double.TryParse(Convert.ToString(dr["毛重"]), out dGrossWeight) == false || dGrossWeight < 1)
{
CommonFunction.ShowMsgBox("复称列表毛重必须为大于0的数字");
return false;
}
if (CommonFunction.Trim(Convert.ToString(dr["单位"])) == "")
{
CommonFunction.ShowMsgBox("检测到复称列表有未填项");
return false;
}
}
}
//遍历当前修改过后的datatable,看序号这一列是否存在重复的值
foreach (DataRow dr in dtTemp.Rows)
{
int iRecordSeq=Convert.ToInt32(dr["序号"]);
if (dtTemp.Select("序号=" + iRecordSeq).Count() > 1)
{
CommonFunction.ShowMsgBox("检测到复称列表有重复的序号,请检查无误后操作");
return false;
}
}
return true;

至此,校验完成。

如何判断当前修改过的datatable的某一列值是否为int型或double类型的更多相关文章

  1. c#计算datatable中某一列值的和

    double sumPercentage = dt.AsEnumerable().Where(dr => { return dt.Rows.IndexOf(dr) > 0; }).Sum( ...

  2. 每日学习心得:Linq解决DataTable按照某一列的值排序问题/DataTable 导出CSV文件/巧用text-overflow解决数据绑定列数据展示过长问题

    2013-8-5 1 Linq解决DataTable按照某一列的值排序 在之前的总结中提到过对拼接而成的复合的DataTable按照某一列值的大小排序,那个主要的思想是在新建表结构时将要排序的那一列的 ...

  3. 上传文件是常要处理的事情,使用ajaxFileUpload.js处理比较方便,这里的ajaxFileUpload.js文件修改过的,

    上传文件是常要处理的事情,使用ajaxFileUpload.js处理比较方便,这里的ajaxFileUpload.js文件修改过的, Html部分 <input type="file& ...

  4. excel转化为table(去掉所有列值都为空的值一行,即返回有效值的DataTable)

    /// <summary> /// 去掉所有列值都为空的值一行,即返回有效值的DataTable /// </summary> /// <param name=" ...

  5. 获取DataTable选择第一行某一列值

    数据源是一个DataTable,现在我们需要获取这个DataTable的第一行第一列的值.先准备一个数据集,创建一个DataTable,并填充数据: source code: using System ...

  6. 解决DataTable中的DataColumn类型默认为int类型时, 导致不能修改其列值为其他类型的解决办法

    问题起因: 扔给数据库一条select * from [表名] , 得到一个DataTable, 发现有一列status状态的DataColumn的类型是int,然后我想换成字典表里的文字描述,然后就 ...

  7. JS 判断 Radio 单选按钮是否为选中状态 并弹出 值信息

    今天项目中所解决的问题:JS 判断 Radio 单选按钮是否为选中状态 并弹出 值信息,一开始总是获取不到 radio 的值,后来发现逻辑存在些问题,特此共享该代码留笔记 和 分享给遇到 这类问题的 ...

  8. C#将datatable的某一列转换成json格式的字符串

    将datatable的某一列转换成json格式的字符串(转换完后自己在字符串前后加{}) /// <summary> ///DataTable装换 Column数据 组合成json 现在的 ...

  9. C#动态操作DataTable(新增行、列、查询行、列等)

    public void CreateTable() { //创建表 DataTable dt = new DataTable(); //1.添加列 dt.Columns.Add("Name& ...

随机推荐

  1. LF: 换行,U+000A VT: 垂直定位,U+000B FF: 换页符,U+000C CR: 回车符,U+000D CR+LF:CR(U+000D)后跟LF(U+000A) NEL: 下一行,U+0085 LS: 分行,U+2028 PS: 分段,U+2029

    https://zh.wikipedia.org/wiki/換行 换行(英语:newline.line ending.end-of-line (EOL).line Feed (LF).line bre ...

  2. JFinal-layui极速开发企业应用管理系统

    Jfinal-layui 官网:http://www.qinhaisenlin.com/ 项目:https://gitee.com/QinHaiSenLin/Jfinal-layui 介绍 JFina ...

  3. Tomcat connection & session timeout settings

    # connection timeout for globle web application cat /home/soft/apache-tomcat-7.0.92/conf/server.xml ...

  4. 深入学习c++--多线程编程(一)

    1. 简介 2. 线程使用 2.1 demo #include <iostream> #include <thread> #include <future> usi ...

  5. Linux下安装maven-及常用命令

        Linux下安装maven1.首先到Maven官网下载安装文件,目前最新版本为3.0.3,下载文件为apache-maven-3.0.3-bin.tar.gz,下载可以使用wget命令: 2. ...

  6. C++类成员存储大小

    1.对象分布图 2.解析 每个类的大小只有其成员变量大小,其中包括:类成员属性,虚函数指针: 而其他没有如:静态变量[静态区],普通函数.静态函数[代码区] 3.总结 类对象的sizeof只包含成员变 ...

  7. Qt编写气体安全管理系统1-项目框架

    一.前言 说到项目框架,也叫代码框架,其实是非常重要的,随着编程经验的增加,相信每个程序员都会有一个自己的习惯的项目框架,这个东西跟建房子一样,先把架子搭好,然后挨个往里边填充内容,据说牛逼的架构师都 ...

  8. Sound (audio file) player in java - working source code example

    转载自:http://ganeshtiwaridotcomdotnp.blogspot.com/2011/12/sound-audio-file-player-in-java-working.html ...

  9. 比较oracle表字段是否一致

    SELECT M.OWNER ,M.TABLE_NAME ,M.COLUMN_ID ,M.COLUMN_NAME ,M.DATA_TYPE ,M.DATA_LENGTH ,N.OWNER ,N.TAB ...

  10. elasticsearch5.0.1集群索引分片丢失的处理

    elasticdump命令安装 yum install npm npm install elasticdump -g 命令安装完毕,可以测试. 可能会报出nodejs的版本之类的错误,你需要升级一下版 ...