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

Posted ubantu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何判断当前修改过的datatable的某一列值是否为int型或double类型相关的知识,希望对你有一定的参考价值。

如何判断当前修改过的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类型的主要内容,如果未能解决你的问题,请参考以下文章

怎么修改datatable中某一列的值?

怎么修改datatable中某一列的值?

JS datatable表中的某一列如何获取

如何提取DataTable中的某一列字段的所有数据,进行运算

怎样隐藏DataTable中的某一列

如何提取DataTable中的某一列字段的所有数据,进行运算