//构造表达式,存放到m_lstExpression集合里面 public void GetExpression(string strPropertyName, object strValue, ExpressionTypeEnum expressType) { Expression expRes = null; MemberExpression member = Expression.PropertyOrField(m_Parameter, strPropertyName); if (expressType == ExpressionTypeEnum.Contains) { expRes = Expression.Call(member, typeof(string).GetMethod("Contains"), Expression.Constant(strValue)); } else if (expressType == ExpressionTypeEnum.Equal) { expRes = Expression.Equal(member, Expression.Constant(strValue, member.Type)); } else if (expressType == ExpressionTypeEnum.LessThan) { expRes = Expression.LessThan(member, Expression.Constant(strValue, member.Type)); } else if (expressType == ExpressionTypeEnum.LessThanOrEqual) { expRes = Expression.LessThanOrEqual(member, Expression.Constant(strValue, member.Type)); } else if (expressType == ExpressionTypeEnum.GreaterThan) { expRes = Expression.GreaterThan(member, Expression.Constant(strValue, member.Type)); } else if (expressType == ExpressionTypeEnum.GreaterThanOrEqual) { expRes = Expression.GreaterThanOrEqual(member, Expression.Constant(strValue, member.Type)); } //return expRes; m_lstExpression.Add(expRes); }
/// <summary> /// Autor: Olonyl Rocha Landeros /// Fecha: 08/07/2011 /// Descripcion: Establecer tipo de dato predefinido que se puede introducir en el control TextBox /// </summary> public void SetDefinedValidator(ExpressionTypeEnum definedExpressionType) { revTextEdit.Enabled = false; tbTextEdit_FilteredTextBoxExtender.Enabled = true; tbTextEdit_TextBoxWatermarkExtender.Enabled = false; switch (definedExpressionType) { case ExpressionTypeEnum.Integer: tbTextEdit_FilteredTextBoxExtender.FilterType = AjaxControlToolkit.FilterTypes.Numbers; break; case ExpressionTypeEnum.LetterUpperCase: tbTextEdit_FilteredTextBoxExtender.FilterType = AjaxControlToolkit.FilterTypes.UppercaseLetters; break; case ExpressionTypeEnum.LetterLowerCase: tbTextEdit_FilteredTextBoxExtender.FilterType = AjaxControlToolkit.FilterTypes.LowercaseLetters; break; case ExpressionTypeEnum.None: tbTextEdit_FilteredTextBoxExtender.Enabled = false; rfvTextEdit.Enabled = false; break; case ExpressionTypeEnum.Number: revTextEdit.Enabled = true; revTextEdit.ValidationExpression = "[0-9]+(\\.[0-9][0-9]?)?"; tbTextEdit_FilteredTextBoxExtender.FilterType = AjaxControlToolkit.FilterTypes.Custom; tbTextEdit_FilteredTextBoxExtender.ValidChars = "0123456789."; break; case ExpressionTypeEnum.Email: tbTextEdit_TextBoxWatermarkExtender.Enabled = true; tbTextEdit_FilteredTextBoxExtender.Enabled = false; rfvTextEdit.Enabled = false; revTextEdit.Enabled = true; revTextEdit.ValidationExpression = "\\w+([-+.']\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*"; break; case ExpressionTypeEnum.LetterAndNumber: tbTextEdit_FilteredTextBoxExtender.FilterType = AjaxControlToolkit.FilterTypes.Custom; tbTextEdit_FilteredTextBoxExtender.ValidChars = "qwertyuiopasdfghjklñzxcvbnmQWERTYUIOPASDFGHJKLÑZXCVBNM0123456789 "; break; case ExpressionTypeEnum.Percent: revTextEdit.Enabled = true; revTextEdit_ValidatorCalloutExtender.Enabled = true; rfvTextEdit_ValidatorCalloutExtender.Enabled = false; rfvTextEdit.Enabled = false; revTextEdit.ValidationExpression = "^(100(?:.0{1,2})?%?|0*?.\\d{1,2}%?|\\d{1,2}(?:.\\d{1,2})?%?)$"; tbTextEdit_FilteredTextBoxExtender.FilterType = AjaxControlToolkit.FilterTypes.Custom; tbTextEdit_FilteredTextBoxExtender.ValidChars = "0123456789"; break; case ExpressionTypeEnum.BothCase: tbTextEdit_FilteredTextBoxExtender.FilterType = AjaxControlToolkit.FilterTypes.Custom; tbTextEdit_FilteredTextBoxExtender.ValidChars = "qwertyuiopasdfghjklñzxcvbnmQWERTYUIOPASDFGHJKLÑZXCVBNM "; break; case ExpressionTypeEnum.Parameter: tbTextEdit_FilteredTextBoxExtender.FilterType = AjaxControlToolkit.FilterTypes.Custom; tbTextEdit_FilteredTextBoxExtender.ValidChars = "qwertyuiopasdfghjklñzxcvbnmQWERTYUIOPASDFGHJKLÑZXCVBNM0123456789@_:/., "; break; } }
//多个字段or同一个值 public void GetExpression(List <string> listStrPropertyName, object strValue, ExpressionTypeEnum expressType) { Expression expRes = null; foreach (var itemValue in listStrPropertyName) { MemberExpression member = Expression.PropertyOrField(m_Parameter, itemValue); if (expressType == ExpressionTypeEnum.Contains) { if (expRes == null) { expRes = Expression.Call(member, typeof(string).GetMethod("Contains"), Expression.Constant(strValue)); //expRes = Expression.Equal(member, Expression.Constant(strValue, member.Type)); } else { expRes = Expression.Or(expRes, Expression.Call(member, typeof(string).GetMethod("Contains"), Expression.Constant(strValue))); } } else { if (expRes == null) { expRes = Expression.Equal(member, Expression.Constant(strValue, member.Type)); } else { expRes = Expression.Or(expRes, Expression.Equal(member, Expression.Constant(strValue, member.Type))); } } } m_lstExpression.Add(expRes); }