/// <summary> /// 根据操作符枚举变量得到实际的操作符 /// </summary> /// <param name="filterOperator">操作符枚举变量</param> /// <returns>实际的操作符</returns> public static string GetOperatorSign(CompareOperator filterOperator) { switch (filterOperator) { case CompareOperator.Equal: return("="); case CompareOperator.In: return("IN"); case CompareOperator.Less: return("<"); case CompareOperator.Like: return("LIKE"); case CompareOperator.More: return(">"); case CompareOperator.NotEqual: return("<>"); case CompareOperator.NotLess: return(">="); case CompareOperator.NotMore: return("<="); default: throw new ArgumentOutOfRangeException(MessageStringManager.GetString("OperatorSignNotDefined")); } }
/// <summary> /// 创建过滤参数 /// </summary> /// <param name="fieldName">参数对应的数据集字段名</param> /// <param name="name">参数的名称</param> /// <param name="isString">标记参数是否是字符型</param> /// <param name="description">参数的描述</param> /// <param name="allowUserEdit">允许普通用户编辑参数值</param> /// <param name="sign">运算符</param> public FilterParameter(string fieldName, string name, bool isString , string description, bool allowUserEdit, CompareOperator sign) { if (String.IsNullOrEmpty(fieldName)) { throw new ArgumentNullException(MessageStringManager.GetString("NullFieldName")); } if (String.IsNullOrEmpty(name)) { throw new ArgumentNullException(MessageStringManager.GetString("NullParameterName")); } if ((!isString) && (sign == CompareOperator.Like)) { throw new ArgumentException(MessageStringManager.GetString("UseLikeOperatprOnDigitalParameter")); } _fieldName = fieldName; _caption = name; _isString = isString; _description = description; _allowUserEdit = allowUserEdit; _operator = sign; _dataCatalog = -1; //_enable = false; }
/// <summary> /// 对传入的条件表达式字符串中的特殊字符进行转义。 /// 在生成DataView或DataColumn的Expression时需要进行此处理 /// </summary> /// <param name="condition">Expression 中的条件表达式</param> /// <param name="operaName">操作符</param> /// <returns></returns> public static string TransferCondition(string condition, CompareOperator operaName) { if (condition == null) { throw new ArgumentNullException(MessageStringManager.GetString("NullParameter")); } // 现在只处理Like的表达式 switch (operaName) { case CompareOperator.Like: if (condition.Contains("[")) { condition = condition.Replace("[", "[[]"); } if (condition.Contains("*")) { condition = condition.Replace("*", "[*]"); } if (condition.Contains("%")) { condition = condition.Replace("%", "[%]"); } if (condition.Contains("_")) { condition = condition.Replace("_", "[_]"); } break; default: break; } return(condition); }
/// <summary> /// 检查传入的参数值是否符合参数类型的要求 /// (主要是防止将字符型数据赋给数值型参数) /// </summary> /// <param name="paraValue"></param> private void CheckValueType(string paraValue) { if ((!IsString) && (CommonOperation.GetStringType(paraValue) != StringType.Numeric) && (CommonOperation.GetStringType(paraValue) != StringType.Empty)) { throw new ArithmeticException(MessageStringManager.GetString("CouldNotSetStringToDigital")); } }
private void SetParameter(string fieldName, GridColumnStyle value) { //this.OnChange(); int num1 = this.IndexOf(fieldName); if (num1 < 0) { throw new ArgumentOutOfRangeException(MessageStringManager.GetString("ParameterOutOfRange")); } this.Replace(num1, value); }
private void SetParameter(string parameterName, FilterParameter value) { //this.OnChange(); int num1 = this.IndexOf(parameterName); if (num1 < 0) { throw new ArgumentOutOfRangeException(MessageStringManager.GetString("ParameterOutOfRange")); } this.Replace(num1, value); }
/// <summary> /// 对传入的条件表达式字符串中的特殊字符进行转义。 /// 在生成DataView或DataColumn的Expression时需要进行此处理 /// </summary> /// <param name="condition">Expression 中的条件表达式</param> /// <param name="operaName">操作符</param> /// <param name="handleQuote">是否处理单引号</param> /// <returns></returns> public static string TransferCondition(string condition, CompareOperator operaName, bool handleQuote) { if (condition == null) { throw new ArgumentNullException(MessageStringManager.GetString("NullParameter")); } // 单引号替换成两个单引号 if (handleQuote) { condition = condition.Replace("'", "''"); } return(TransferCondition(condition, operaName)); }
/// <summary> /// 在给定 Object 的一组属性值的情况下重新创建该对象 /// </summary> /// <param name="context"></param> /// <param name="propertyValues"></param> /// <returns></returns> public override object CreateInstance(ITypeDescriptorContext context, IDictionary propertyValues) { if (propertyValues == null) { throw new ArgumentNullException(MessageStringManager.GetString("NullParameter")); } BaseWordbook wordbook = WordbookStaticHandle.GetWordbook((string)propertyValues["WordbookName"]); wordbook.ExtraCondition = propertyValues["ExtraCondition"].ToString(); wordbook.SelectedStyleIndex = (int)propertyValues["SelectedStyleIndex"]; wordbook.MatchFieldComb = propertyValues["MatchFieldComb"].ToString(); wordbook.ParameterValueComb = propertyValues["ParameterValue"].ToString(); wordbook.CacheTime = (int)propertyValues["SelectedStyleIndex"]; return(wordbook); }
/// <summary> /// 通过字典名称获取对应的字典类实例 /// </summary> /// <param name="name">字典类的中文(全称或分类名+字典名)</param> /// <returns>类名正确,返回相应实例,否则报异常</returns> public static BaseWordbook GetWordbookByName(string name) { if (String.IsNullOrEmpty(name)) { throw new ArgumentNullException(MessageStringManager.GetString("NullParameterName")); } var wordbooks = WordbookList.Where(wd => wd.Name.Equals(name)); try { WordbookInfo info = wordbooks.First(); return(GetWordbook(info.TypeName)); } catch { return(null); } }
/// <summary> /// 通过字典名称获取对应的字典类实例 /// </summary> /// <param name="name">字典类的类名(全称或分类名+字典名)</param> /// <returns>类名正确,返回相应实例,否则报异常</returns> public static BaseWordbook GetWordbook(string name) { if (String.IsNullOrEmpty(name)) { throw new ArgumentNullException(MessageStringManager.GetString("NullParameterName")); } // 用Assembly.LoadFrom()需要解决不同应用程序域的问题, // 现在用此方式得到字典类的程序集,并进行反射处理。 // 目前还不清楚这样做对性能有何影响,如果不行的话,只能还采用硬编码的方式 Type bookType = null; if (m_WordbookAssembly == null) { Assembly[] assemlys = AppDomain.CurrentDomain.GetAssemblies(); foreach (Assembly assembly in assemlys) { //MessageBox.Show(assembly.GetName().Name); // 通过比较Assembly的名称得到字典类的程序集 if (assembly.GetName().Name == "DrectSoft.Basic.Wordbook") { m_WordbookAssembly = assembly; break; } } } bookType = m_WordbookAssembly.GetType(ConvertBookNameToFullName(name)); if (bookType == null) { //MessageBox.Show("Could not found the wordbook"); return(null); } else { BaseWordbook result = (BaseWordbook)System.Activator.CreateInstance(bookType);; result.CacheTime = 0; return(result); } }
/// <summary> /// 检查输入值是否合法 /// </summary> /// <returns></returns> private void CheckValue() { if (tBoxName.Text.Trim().Length == 0) { throw new ArgumentNullException(MessageStringManager.GetString("SqlWordbookNeedName")); } if (tBoxQuery.Text.Trim().Length == 0) { throw new ArgumentNullException(MessageStringManager.GetString("SqlWordbookNeedQurySentence")); } if (tBoxCodeField.Text.Trim().Length == 0) { throw new ArgumentNullException(MessageStringManager.GetString("SqlWordbookNeedCodeFieldName")); } if (tBoxNameField.Text.Trim().Length == 0) { throw new ArgumentNullException(MessageStringManager.GetString("SqlWordbookNeedNameFieldName")); } }
/// <summary> /// 检查传入的参数值是否正确 /// </summary> /// <param name="paraValue"></param> private void CheckValue(object paraValue) { string temp = paraValue.ToString(); // 先用','作为分隔符,拆分出独立的条件 string[] separator1 = new string[] { "," }; string[] separator2 = new string[] { "~" }; string[] values = temp.Split(separator1, StringSplitOptions.None); string[] rangs; if ((values.Length > 1) && (Operator != CompareOperator.In)) { throw new ArgumentException(MessageStringManager.GetString("CoulNotSetParameterRange")); } foreach (string condition in values) { // 检查范围设置是否正确 if (condition.Contains("~")) { rangs = condition.Split(separator2, StringSplitOptions.None); if (rangs.Length != 2) { throw new ArgumentException(MessageStringManager.GetString("WrongParameterRange")); } if (condition.Contains("%")) { throw new ArgumentException(MessageStringManager.GetString("CouldNotUseWildcardInRange")); } CheckValueType(rangs[0]); CheckValueType(rangs[1]); } else // 检查单个的条件是否满足要求 { CheckValueType(condition); } } }