我有一个要求,我需要以编程方式从RadFilter中删除表达式。 我的RadFilter绑定到RadGrid,用户可以选择从网格中删除列。
当删除列时,我需要遍历RadFilter中的所有表达式并删除在此列上定义的表达式。有人可以帮帮我吗?
答案 0 :(得分:1)
我终于明白了如何使这项工作。 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);
}
}
}
}