using System;
using System.Data;
using System.Collections;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;
using System.Text.RegularExpressions;
using System.Reflection;
using System.Diagnostics;
using System.IO;
using CoreFS.CA06;
using Infragistics.Win.UltraWinGrid;
namespace Core.Mes.Client.Comm
{
public class Globals
{
///
/// 字符串转是否能转换成非负数
///
///
///
public static bool Is_Below_zero(string str)
{
try
{
if (IsDouble(str) && double.Parse(str) > 0)
return true;
else
return false;
}
catch
{
return false;
}
}
///
/// 保留指定位数小数
///
///
///
///
public static string ValWithDigits(string sVal, int Digits)
{
try
{
decimal d = decimal.Parse(sVal);
string sFormat = "0";
if (Digits > 0)
{
sFormat += ".";
for (int i = 0; i < Digits; i++)
sFormat += "0";
}
return d.ToString(sFormat);
}
catch
{
return "";
}
}
///
/// 单元格复制内容
///
///
public static void cellCopy(string strMessage)
{
Clipboard.SetDataObject(strMessage, false);
}
public static void CopyDataToDataTable(DataTable source, DataTable dest, bool clearExists)
{
if (source != null && dest != null)
{
if (clearExists)
{
dest.Rows.Clear();
}
DataRow row;
for (int i = 0; i < source.Rows.Count; i++)
{
row = dest.NewRow();
for (int j = 0; j < source.Columns.Count; j++)
{
try
{
if (dest.Columns.Contains(source.Columns[j].ColumnName))
{
row[source.Columns[j].ColumnName] = source.Rows[i][j];
}
}
catch { }
}
dest.Rows.Add(row);
}
}
}
public static bool ContaisColumn(ref UltraGrid ultraGrid, string strColumn)
{
try
{
if (ultraGrid == null || ultraGrid.DisplayLayout.Bands[0].Columns.Count == 0 || string.IsNullOrEmpty(strColumn))
{
return false;
}
foreach (UltraGridColumn col in ultraGrid.DisplayLayout.Bands[0].Columns)
{
if (col.Key.Equals(strColumn))
{
return true;
}
}
}
catch { }
return false;
}
public static void LocateRecord(ref UltraGrid ultraGrid, ref Hashtable Columns, out UltraGridRow row)
{
row = null;
try
{
if (ultraGrid == null || ultraGrid.Rows.Count == 0)
{
return;
}
string strColumn = "";
object value = null;
ArrayList alistCols = new ArrayList(Columns.Keys);
for (int i = 0; i < alistCols.Count; i++)
{
strColumn = alistCols[i].ToString();
if (!ContaisColumn(ref ultraGrid, strColumn))
{
return;
}
}
bool Found = false;
UltraGridRow temp = null;
for (int i = 0; i < ultraGrid.Rows.Count; i++)
{
Found = true; ;
temp = ultraGrid.Rows[i];
for (int j = 0; j < alistCols.Count; j++)
{
strColumn = alistCols[j].ToString();
value = Columns[strColumn];
if (!temp.Cells[strColumn].Value.Equals(value))
{
Found = false;
break;
}
}
if (Found)
{
ultraGrid.ActiveRow = temp;
row = temp;
return;
}
}
}
catch (Exception ex) { string str = ex.Message; }
}
///
/// 清除UltraGrid的DataSource的数据
///
///
public static void ClearGridDataSourceData(Infragistics.Win.UltraWinGrid.UltraGrid ulGrid)
{
if (ulGrid.DataSource is DataSet)
{
for (int i = ((DataSet)ulGrid.DataSource).Tables.Count - 1; i >= 0; i--)
{
((DataSet)ulGrid.DataSource).Tables[i].Rows.Clear();
}
}
}
///
/// 全选选中的子行
///
/// UltraGrid
/// 复选框列名
/// 值
public static void doCheckedAllChildRow(Infragistics.Win.UltraWinGrid.UltraGrid Gride, string ColumnName, string BoolValue)
{
Infragistics.Win.UltraWinGrid.UltraGridRow ulRow;
if (Gride.ActiveRow.ParentRow == null)
{
ulRow = Gride.ActiveRow;
}
else
{
ulRow = Gride.ActiveRow.ParentRow;
}
int Index = ulRow.Index;
for (int i = 0; i < Gride.Rows[Index].ChildBands[0].Rows.Count; i++)
{
Gride.Rows[Index].ChildBands[0].Rows[i].Cells[ColumnName].Value = BoolValue;
}
}
///
/// 选中行中指定的子行
///
/// UltraGrid
/// 复选框列名
/// 需要与子行集合比对的列名
/// 需要选中的子行集合
public static void doCheckedAppointChildRow(RowEventArgs e, string ColumnName,string ColumnName2, string[] sArgs)
{
for (int i = 0; i < e.Row.ChildBands[0].Rows.Count; i++)
{
for (int t = 0; t < sArgs.Length; t++)
{
if (e.Row.ChildBands[0].Rows[i].Cells[ColumnName2].Value.ToString() == sArgs[t].ToString())
{
e.Row.ChildBands[0].Rows[i].Cells[ColumnName].Value = "True";
}
}
}
}
///
/// 获取子行中选中的列ID(取的列名为ID_)
///
/// UltraGrid
/// 复选框列名
public static string doCheckedRowValue(Infragistics.Win.UltraWinGrid.UltraGrid Gride, string ColumnName)
{
Infragistics.Win.UltraWinGrid.UltraGridRow ulRow;
if (Gride.ActiveRow.ParentRow == null)
{
ulRow = Gride.ActiveRow;
}
else
{
ulRow = Gride.ActiveRow.ParentRow;
}
int Index = ulRow.Index;
string IDString = "";
for (int i = 0; i < Gride.Rows[Index].ChildBands[0].Rows.Count; i++)
{
if (Gride.Rows[Index].ChildBands[0].Rows[i].Cells[ColumnName].Text == "True")
{
IDString += Gride.Rows[Index].ChildBands[0].Rows[i].Cells["ID_"].Value + ",";
}
}
if (IDString != "")
{
IDString = IDString.Substring(0, IDString.Length - 1);
}
return IDString;
}
///
/// 选中或取消选中,当前Gride中的所有行
///
/// UltraGrid
/// 复选框列名
/// 值
public static void doCheckeAllRow(Infragistics.Win.UltraWinGrid.UltraGrid Gride, string ColumnName, string BoolValue)
{
if (Gride != null)
{
for (int i = 0; i < Gride.Rows.Count; i++)
{
Gride.Rows[i].Cells[ColumnName].Value = BoolValue;
}
}
}
#region "数据验证"
///
/// 获取字符串字节长度
///
/// 需要获取长度的字符串
/// 字符串字节长度
public static int GetStrBytesLength(string strVal)
{
int lenTotal = 0;
int n = strVal.Length;
string strWord = "";
int asc;
for (int i = 0; i < n; i++)
{
strWord = strVal.Substring(i, 1);
asc = Convert.ToChar(strWord);
if (asc < 0 || asc > 127)
lenTotal = lenTotal + 2;
else
lenTotal = lenTotal + 1;
}
return lenTotal;
}
///
/// 验证DataTable是否为空
///
/// DataTable数据
/// true为空值
public static bool IsNullTable(DataTable dt)
{
if (dt == null || dt.Rows.Count <= 0)
{
return true;
}
else
{
return false;
}
}
///
/// 校验字符串是否只包含字母与数字
///
/// 需要校验的字符串
/// true表示符合要求,false表示不符合要求
public static bool IsOnlyLetterAndDigit(string toVerified)
{
Regex rx = new Regex(@"^[a-zA-Z0-9-]*$");
return rx.IsMatch(toVerified.Trim(), 0);
}
///
/// 检验是否是整数
///
/// 需要检验的字符串
/// 是否为整数:true是整数,false非整数
public static bool IsInt(string str)
{
Regex rx = new Regex(@"^[0123456789]+$");
return rx.IsMatch(str);
}
///
/// 检验是否是整数
///
///
///
public static bool IsInt32(string sVal)
{
try
{
Int32.Parse(sVal);
return true;
}
catch
{
return false;
}
}
///
/// 校验是否为正的浮点数
///
/// 需要检验的字符串
/// 是否为正浮点,是返回true,否则返回false
public static bool IsFloat(string str)
{
Regex rx = new Regex(@"^[0-9]*(.)?[0-9]+$", RegexOptions.IgnoreCase);
return rx.IsMatch(str.Trim());
}
///
/// 验证浮点数
///
///
///
public static bool IsDouble(string sVal)
{
try
{
Double.Parse(sVal);
return true;
}
catch
{
return false;
}
}
///
/// 检验是否为数字
///
/// 需要检验的字符串
/// 是否为数字:true代表是,false代表否
public static bool IsNumber(string str)
{
Regex rx = new Regex(@"^[+-]?[0123456789]*[.]?[0123456789]*$");
return rx.IsMatch(str);
}
///
/// 检验字符串是否为日期时间
///
/// 需要检验的字符串
/// 是否为日期时间:true代表是,false代表否
public static bool IsNotDateTime(string str)
{
DateTime dt = new DateTime();
return (!(DateTime.TryParse(str, out dt)));
}
///
/// 检验字符串是否为邮政编码
///
/// 需要检验的字符串
/// 是否为邮政编码:true代表是,false代表否
public static bool IsPostCode(string str)
{
Regex rx = new Regex(@"^[0123456789]{6}$");
return rx.IsMatch(str);
}
///
/// 检验字符串是否为身份证号
///
/// 需要检验的字符串
/// 是否为身份证号:true代表是,false代表否
public static bool IsCode(string str)
{
Regex rx = new Regex(@"^[0123456789]{15,18}$");
return rx.IsMatch(str);
}
///
/// 检验字符串是否为电子邮件
///
/// 需要检验的字符串
/// 是否为电子邮件:true代表是,false代表否
public static bool IsEMail(string str)
{
Regex rx = new Regex(@"w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*");
return rx.IsMatch(str);
}
///
/// 检验字符串是否为中国地区的电话号码
///
/// 需要检验的字符串
/// 是否为中国地区的电话号码:true代表是,false代表否
public static bool IsPhoneNumber(string str)
{
Regex rx = new Regex(@"((d{3,4})|d{3,4}-)?d{7,8}(-d{3})*");
return rx.IsMatch(str);
}
///
/// 检验字符串是否为汉字
///
/// 需要检验的字符串
/// 是否为汉字:true代表是,false代表否
public static bool IsChinese(string str)
{
Regex rx = new Regex(@"[\u4e00-\u9fbb]+$");
return rx.IsMatch(str);
}
///
/// 检验字符串是否为双字节字符(包括汉字)
///
/// 需要检验的字符串
/// 是否为双字节字符:true代表是,false代表否
public static bool IsDoubleByteChar(string str)
{
Regex rx = new Regex(@"[^x00-xff]");
return rx.IsMatch(str);
}
///
/// 检验字符串是否为URL地址
///
/// 需要检验的字符串
/// 是否为URL地址:true代表是,false代表否
public static bool IsURLAddress(string str)
{
Regex rx = new Regex(@"[a-zA-z]+://[^s]*");
return rx.IsMatch(str);
}
///
/// 检验字符串是否为IP地址
///
/// 需要检验的字符串
/// 是否为IP地址:true代表是,false代表否
public static bool IsIPAddress(string str)
{
Regex rx = new Regex(@"d+.d+.d+.d+");
return rx.IsMatch(str);
}
///
/// 清除字符串中的HTML标签(对于复杂的嵌套标签有时不准确)
///
/// 指定的要被处理的字符串
/// 清除HTML标签后的字符串
public static string RemoveHtmlTags(string toEvaluate)
{
Regex rx = new Regex(@"s/<[a-zA-Z/][^>]*>//g", RegexOptions.IgnoreCase);
return rx.Replace(toEvaluate, "");
}
///
/// 判断输入的字符串是否完全匹配正则
///
/// 正则表达式
/// 待判断的字符串
///
public static bool IsValiable(string RegexExpression, string str)
{
bool blResult = false;
Regex rep = new Regex(RegexExpression, RegexOptions.IgnoreCase);
//blResult = rep.IsMatch(str);
Match mc = rep.Match(str);
if (mc.Success)
{
if (mc.Value == str) blResult = true;
}
return blResult;
}
///
/// 判断DataSet是否是空值
///
/// DataSet数据
/// true 空值
public static bool IsNullData(DataSet ds)
{
if (ds == null || ds.Tables.Count == 0 || ds.Tables[0].Rows.Count == 0)
{
return true;
}
else
{
return false;
}
}
///
/// 值比对 sSign:符号,sMin:最小值,sMax:最大值,sRealVal:实际值
///
///
///
///
///
///
public static bool ValIsEligible(string sSign, string sMin, string sMax, string sRealVal)
{
try
{
switch (sSign)
{
case ">":
return (double.Parse(sMin) < double.Parse(sRealVal));
case ">=":
return (double.Parse(sMin) <= double.Parse(sRealVal));
case "=":
if (Globals.IsDouble(sMin))
return (double.Parse(sMin) == double.Parse(sRealVal));
else
return (sMin == sRealVal);
case "<":
return (double.Parse(sMax) > double.Parse(sRealVal));
case "<=":
return (double.Parse(sMax) >= double.Parse(sRealVal));
default:
return true;
}
}
catch
{
return false;
}
}
#endregion
///
/// 数字转换成中文数字
///
///
///
public static string ConvertNumberToChinese(string strNum)
{
string[] Nums = { "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖" };
string[] Digits = { "", "拾", "佰", "仟" };
string[] Units = { "元", "万", "亿", "万亿" };
string x, y, z = "";
if (strNum.Length > 2)
{
x = strNum.Substring(0, strNum.Length - 2);
y = strNum.Substring(strNum.Length - 2, 2);
}
else
{
x = "";
y = strNum;
}
if (y.Length == 2)
{
int n = Convert.ToInt32(y.Substring(0, 1));
z = Nums[n] + "角";
}
if (y.Length > 0)
{
int n = Convert.ToInt32(y.Substring(y.Length - 1, 1));
z += Nums[n] + "分";
}
if (y.Length == 0)
{
if (x.Length == 0)
z = "零元整";
else
z = "整";
}
string S = ""; //返回值
int p = 0; //字符位置指针
int m = x.Length % 4; //取模
// 四位一组得到组数
int k = (m > 0 ? x.Length / 4 + 1 : x.Length / 4);
// 外层循环在所有组中循环
// 从左到右 高位到低位 四位一组 逐组处理
// 每组最后加上一个单位: "[万亿]","[亿]","[万]"
for (int i = k; i > 0; i--)
{
int L = 4;
if (i == k && m != 0)
{
L = m;
}
// 得到一组四位数 最高位组有可能不足四位
string s = x.Substring(p, L);
int l = s.Length;
// 内层循环在该组中的每一位数上循环 从左到右 高位到低位
for (int j = 0; j < l; j++)
{
//处理改组中的每一位数加上所在位: "仟","佰","拾",""(个)
int n = Convert.ToInt32(s.Substring(j, 1));
if (n == 0)
{
if (j < l - 1
&& Convert.ToInt32(s.Substring(j + 1, 1)) > 0 //后一位(右低)
&& !S.EndsWith(Nums[n]))
{
S += Nums[n];
}
}
else
{
//处理 1013 一千零"十三", 1113 一千一百"一十三"
if (!(n == 1 && (S.EndsWith(Nums[0]) | S.Length == 0) && j == l - 2))
{
S += Nums[n];
}
S += Digits[l - j - 1];
}
}
p += L;
// 每组最后加上一个单位: [万],[亿] 等
if (i < k) //不是最高位的一组
{
if (Convert.ToInt32(s) != 0)
{
//如果所有 4 位不全是 0 则加上单位 [万],[亿] 等
S += Units[i - 1];
}
}
else
{
//处理最高位的一组,最后必须加上单位
S += Units[i - 1];
}
}
return S + z;
}
///
/// 时间计算返回分
///
///
///
///
public static int caculateTime(DateTime startTime, DateTime endTime)
{
int lStayDuration = 0;
TimeSpan odtSpan;
if (endTime > startTime)
{
odtSpan = endTime - startTime;
lStayDuration = Convert.ToInt32(System.Math.Round(odtSpan.TotalMinutes));
}
else if (startTime != endTime)
{
if (startTime > DateTime.Now)
lStayDuration = 0;
else
{
odtSpan = DateTime.Now - startTime;
lStayDuration = Convert.ToInt32(System.Math.Round(odtSpan.TotalMinutes));
}
}
return lStayDuration;
}
///
/// 时间计算返回秒
///
///
///
///
public static int caculateTimeSeconds(DateTime startTime, DateTime endTime)
{
int lStayDuration = 0;
TimeSpan odtSpan;
if (endTime > startTime)
{
odtSpan = endTime - startTime;
lStayDuration = Convert.ToInt32(System.Math.Round(odtSpan.TotalSeconds));
}
else if (startTime != endTime)
{
if (startTime > DateTime.Now)
lStayDuration = 0;
else
{
odtSpan = DateTime.Now - startTime;
lStayDuration = Convert.ToInt32(System.Math.Round(odtSpan.TotalSeconds));
}
}
return lStayDuration;
}
///
/// 获取两个时间段的差值
///
///
///
///
public static int JudgeTime(DateTime startTime, DateTime endTime)
{
int lStayDuration = 0;
TimeSpan odtSpan;
if (endTime > startTime)
{
odtSpan = endTime - startTime;
lStayDuration = Convert.ToInt32(System.Math.Round(odtSpan.TotalMinutes));
}
return lStayDuration;
}
///
/// 将ultragrid的数据导出到Excel中
///
/// 要导出数据的ulGrid名称
/// Excel文件名
public static void ulGridToExcel(Infragistics.Win.UltraWinGrid.UltraGrid ulGrid, string sFileName)
{
try
{
Infragistics.Win.UltraWinGrid.ExcelExport.UltraGridExcelExporter ulGridExt = new Infragistics.Win.UltraWinGrid.ExcelExport.UltraGridExcelExporter();
ulGridExt.CellExporting += new Infragistics.Win.UltraWinGrid.ExcelExport.CellExportingEventHandler(ultraGridExcelExporter1_CellExporting);
System.Windows.Forms.SaveFileDialog saveFileDialog1 = new SaveFileDialog();
if (ulGrid.Rows.Count == 0)
{
MessageBox.Show("没有数据!", "提示");
return;
}
saveFileDialog1.FileName = sFileName + DateTime.Now.ToString("yyMMdd") + ".xls";
if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{
string sFullName = saveFileDialog1.FileName;
ulGridExt.Export(ulGrid, sFullName);
ProcessStartInfo p = new ProcessStartInfo(sFullName);
p.WorkingDirectory = Path.GetDirectoryName(sFullName);
Process.Start(p);
}
}
catch (Exception ex)
{
MessageBox.Show("导出失败,原因:" + ex.Message);
}
}
///
/// 当Grid导出EXCEL时,列字段中的值为编码时,将编码转换成中文
///
///
///
public static void ultraGridExcelExporter1_CellExporting(object sender, Infragistics.Win.UltraWinGrid.ExcelExport.CellExportingEventArgs e)
{
try
{
if (e.GridColumn.RowLayoutColumnInfo.LabelPosition == Infragistics.Win.UltraWinGrid.LabelPosition.LabelOnly)
{
e.Cancel = true;
}
if (e.GridColumn.EditorControl != null || e.GridColumn.ValueList != null)
{
e.Value = e.GridRow.GetCellText(e.GridColumn);
}
}
catch
{
}
}
///
/// 清除Grid的列过滤
///
/// Grid名称
public static void ClearUlGridFilter(Infragistics.Win.UltraWinGrid.UltraGrid ulGrid)
{
ulGrid.DisplayLayout.Bands[0].ColumnFilters.ClearAllFilters();
}
///
/// 增加Grid的列过滤
///
///
public static void AddUlGridFilter(Infragistics.Win.UltraWinGrid.UltraGrid ulGrid)
{
ulGrid.DisplayLayout.Override.AllowRowFiltering = Infragistics.Win.DefaultableBoolean.True;
}
//查找treeView结点的父结点
public static TreeNode findParentNode(TreeNode preLvlNode, string parentKey)
{
if (preLvlNode.Name == parentKey) return preLvlNode;
foreach (TreeNode node in preLvlNode.Nodes)
{
if (node.Name.Length <= parentKey.Length)
{
if (node.Nodes.Count > 0)
{
TreeNode tNode = findParentNode(node, parentKey);
if (tNode != null)
return tNode;
}
else
if (node.Name == parentKey)
return node;
}
else
return null;
}
return null;
}
}
}