プログラムで 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);
}
}
}
}