如何判斷當前修改過的datatable的某一列值是否為int型或double類型 今天在做datatable數據驗證時碰到要對datatable的列數據進行數據類型校驗,因此記錄一下本人校驗的方法,如果還有更簡單的校驗方式,歡迎大家踴躍分享,不勝感激。 c / 取得改變過的datatable,註意不 ...
如何判斷當前修改過的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;
至此,校驗完成。