Javascript 如何管理';为空';和';不为空';使用剑道UI在服务器端进行过滤?
我使用的是剑道UI,其中有“大于”、“小于”、“大于或等于”、“空”和“不空”等数据过滤器 所有这些都在工作,但当我选择“null”或“is not null”过滤器时,它们会引发异常 我使用了以下代码进行筛选:Javascript 如何管理';为空';和';不为空';使用剑道UI在服务器端进行过滤?,javascript,jquery,asp.net-mvc,kendo-ui,Javascript,Jquery,Asp.net Mvc,Kendo Ui,我使用的是剑道UI,其中有“大于”、“小于”、“大于或等于”、“空”和“不空”等数据过滤器 所有这些都在工作,但当我选择“null”或“is not null”过滤器时,它们会引发异常 我使用了以下代码进行筛选: var entityType = (typeof(T)); PropertyInfo property; if (filter.Field.Contains(".")) property = GetNestedProp<T>(filter.Field); else
var entityType = (typeof(T));
PropertyInfo property;
if (filter.Field.Contains("."))
property = GetNestedProp<T>(filter.Field);
else
property = entityType.GetProperty(filter.Field, BindingFlags.Instance | BindingFlags.Public |
BindingFlags.NonPublic);
property = entityType.GetRuntimeProperty(filter.Field);
var parameterIndex = parameters.Count;
switch (filter.Operator.ToLower())
{
case "eq":
case "neq":
case "gte":
case "gt":
case "lte":
case "lt":
case "isnull":
case "isnotnull":
if (property != null)
{
if (typeof(DateTime).IsAssignableFrom(property.PropertyType))
{
//if(filter.Operator.ToLower()== "isnull") // check to the all instead of giving values to the case
parameters.Add(DateTime.Parse(filter.Value).Date);
return string.Format("EntityFunctions.TruncateTime({0}){1}@{2}", filter.Field, ToLinqOperator(filter.Operator), index);
}
if (typeof(DateTime?).IsAssignableFrom(property.PropertyType))
{
parameters.Add(DateTime.Parse(filter.Value).Date);
return string.Format("EntityFunctions.TruncateTime({0}){1}@{2}", filter.Field, ToLinqOperator(filter.Operator), index);
}
if (typeof(int).IsAssignableFrom(property.PropertyType))
{
parameters.Add(int.Parse(filter.Value));
return string.Format("{0}{1}@{2}", filter.Field, ToLinqOperator(filter.Operator), index);
}
if (typeof(int?).IsAssignableFrom(property.PropertyType))
{
parameters.Add(int.Parse(filter.Value));
return string.Format("{0}{1}@{2}", filter.Field, ToLinqOperator(filter.Operator), index);
}
if (typeof(Decimal?).IsAssignableFrom(property.PropertyType))
{
if (filter.Operator.ToLower() == "isnull")
{
parameters.Add(Boolean.Parse(filter.Value));
return string.Format("{0}{1}@{2}", filter.Field, ToLinqOperator(filter.Operator), index);
}
else
{
parameters.Add(Decimal.Parse(filter.Value));
return string.Format("{0}{1}@{2}", filter.Field, ToLinqOperator(filter.Operator), index);
}
}
if (typeof(Decimal).IsAssignableFrom(property.PropertyType))
{
parameters.Add(Decimal.Parse(filter.Value));
return string.Format("{0}{1}@{2}", filter.Field, ToLinqOperator(filter.Operator), index);
}
//if(typeof(Boolean?).IsAssignableFrom(property.PropertyType))
//{
// parameters.Add(Boolean.Parse(filter.Value));
//}
//if (typeof(Boolean).IsAssignableFrom(property.PropertyType))
//{
// parameters.Add(Decimal.Parse(filter.Value));
//}
}
parameters.Add(filter.Value);
return string.Format("{0}{1}@{2}", filter.Field, ToLinqOperator(filter.Operator), index);
case "startswith": parameters.Add(filter.Value); return string.Format("{0}.StartsWith(" + "@{1})", filter.Field, index);
case "endswith":
parameters.Add(filter.Value); return string.Format("{0}.EndsWith(" + "@{1})", filter.Field, index);
case "contains": parameters.Add(filter.Value); return string.Format("{0}.Contains(" + "@{1})", filter.Field, index);
default: throw new ArgumentException("This operator is not yet supported for this Grid", filter.Operator);
}
}
var entityType=(typeof(T));
财产信息财产;
if(filter.Field.Contains(“.”)
属性=GetNestedProp(filter.Field);
其他的
property=entityType.GetProperty(filter.Field,BindingFlags.Instance | BindingFlags.Public|
BindingFlags(非公开);
property=entityType.GetRuntimeProperty(filter.Field);
var parameterIndex=参数.计数;
开关(filter.Operator.ToLower())
{
案例“eq”:
案例“neq”:
案例“gte”:
案例“gt”:
案例“lte”:
案例“lt”:
案例“isnull”:
案例“isnotnull”:
if(属性!=null)
{
if(typeof(DateTime).IsAssignableFrom(property.PropertyType))
{
//if(filter.Operator.ToLower()==“isnull”)//检查全部,而不是给大小写赋值
parameters.Add(DateTime.Parse(filter.Value.Date));
返回string.Format(“EntityFunctions.TruncateTime({0}){1}@{2}”、filter.Field、ToLinqOperator(filter.Operator)、index);
}
if(typeof(DateTime?).IsAssignableFrom(property.PropertyType))
{
parameters.Add(DateTime.Parse(filter.Value.Date));
返回string.Format(“EntityFunctions.TruncateTime({0}){1}@{2}”、filter.Field、ToLinqOperator(filter.Operator)、index);
}
if(typeof(int).IsAssignableFrom(property.PropertyType))
{
parameters.Add(int.Parse(filter.Value));
返回string.Format(“{0}{1}@{2}”,filter.Field,ToLinqOperator(filter.Operator),index);
}
if(typeof(int?.IsAssignableFrom(property.PropertyType))
{
parameters.Add(int.Parse(filter.Value));
返回string.Format(“{0}{1}@{2}”,filter.Field,ToLinqOperator(filter.Operator),index);
}
if(typeof(Decimal?).IsAssignableFrom(property.PropertyType))
{
if(filter.Operator.ToLower()=“isnull”)
{
parameters.Add(Boolean.Parse(filter.Value));
返回string.Format(“{0}{1}@{2}”,filter.Field,ToLinqOperator(filter.Operator),index);
}
其他的
{
parameters.Add(Decimal.Parse(filter.Value));
返回string.Format(“{0}{1}@{2}”,filter.Field,ToLinqOperator(filter.Operator),index);
}
}
if(typeof(Decimal).IsAssignableFrom(property.PropertyType))
{
parameters.Add(Decimal.Parse(filter.Value));
返回string.Format(“{0}{1}@{2}”,filter.Field,ToLinqOperator(filter.Operator),index);
}
//if(typeof(Boolean?).IsAssignableFrom(property.PropertyType))
//{
//parameters.Add(Boolean.Parse(filter.Value));
//}
//if(typeof(Boolean).IsAssignableFrom(property.PropertyType))
//{
//parameters.Add(Decimal.Parse(filter.Value));
//}
}
参数.Add(filter.Value);
返回string.Format(“{0}{1}@{2}”,filter.Field,ToLinqOperator(filter.Operator),index);
大小写“startswith”:parameters.Add(filter.Value);返回string.Format(“{0}.startswith”(“+”@{1})”,filter.Field,index);
案例“endswith”:
parameters.Add(filter.Value);返回string.Format(“{0}.EndsWith(“+”@{1})”,filter.Field,index);
大小写“contains”:parameters.Add(filter.Value);返回string.Format(“{0}.contains”(“+”@{1})”,filter.Field,index);
默认值:抛出新ArgumentException(“此网格尚不支持此运算符”,filter.operator);
}
}