0

プログラムで RadFilter から式を削除する必要があるという要件があります。私の RadFilter は RadGrid に関連付けられており、ユーザーはグリッドから列を削除するオプションを持っています。

列が削除されたら、RadFilter のすべての式をループして、この列で定義された式を削除する必要があります。誰かがこれで私を助けてくれますか?

4

1 に答える 1

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);
            }
        }
    }
}
于 2013-12-09T16:18:28.487 に答える