我有一个要求,我需要以编程方式从 RadFilter 中删除一个表达式。我的 RadFilter 与 RadGrid 绑定,用户可以选择从网格中删除列。
删除列后,我需要遍历 RadFilter 中的所有表达式并删除在此列上定义的表达式。有人可以帮我吗?
我有一个要求,我需要以编程方式从 RadFilter 中删除一个表达式。我的 RadFilter 与 RadGrid 绑定,用户可以选择从网格中删除列。
删除列后,我需要遍历 RadFilter 中的所有表达式并删除在此列上定义的表达式。有人可以帮我吗?
我终于弄清楚了如何使这项工作。Telerik 控件是一个黑洞,如果您想实现一些更复杂的功能,而不仅仅是坚持他们拥有的演示场景,那么那里没有大量的文档。我希望这对某人有所帮助。
public void YourMethod()
{
//rfReport is RadFilter control defined somewhere on your aspx page
//fieldName is GridColumns's DataField property whose expression you want to
//remove from RadFilter
RemoveFilterExpressions(rfReport.RootGroup, string fieldName);
}
private void RemoveFilterExpressions(RadFilterGroupExpression filterGroupExpression, string fieldName)
{
for (int i = filterGroupExpression.Expressions.Count - 1; i >= 0; i--)
{
var exp = filterGroupExpression.Expressions[i];
if (exp.FilterFunction == RadFilterFunction.Group)
{
RemoveFilterExpressions(exp as RadFilterGroupExpression, fieldName);
//Remove the filterGroupExpression if it has No expressions
if (((RadFilterGroupExpression)exp).Expressions.Count == 0)
{
filterGroupExpression.Expressions.Remove(exp);
}
}
else
{
if (((RadFilterNonGroupExpression)exp).FieldName == fieldName)
{
//Remove expression if FieldName == fieldName
filterGroupExpression.Expressions.Remove(exp);
}
}
}
}