4

RadGridにカスタムフィルターを追加しようとしています。列vendNumがあります。これを使用して、ユーザーがコンマ区切りのリストを使用して複数のvendNumをフィルタリングできるようにします。基本的に、SQLの「in」ステートメントと同じ機能が必要です(ここで、vendNumは(X、Y、Z)にあります)。

私はこのサイトのチュートリアルに従い、RadGrid1_ItemCommandイベントに配置する次のコードを思いつきました。

 protected void RadGrid1_ItemCommand(object source, GridCommandEventArgs e)
        {
            if (e.CommandName == RadGrid.FilterCommandName)
            {
                Pair filterPair = (Pair)e.CommandArgument;
    
                switch (filterPair.Second.ToString())
                {               
                    case "vendNum":
                        TextBox tbPattern = (e.Item as GridFilteringItem)["vendNum"].Controls[0] as TextBox;
                        if (tbPattern.Text.Contains(","))
                        {
                            string[] values = tbPattern.Text.Split(',');
                            if (values.Length >= 2)
                            {
                                e.Canceled = true;
                                StringBuilder newFilter = new StringBuilder();
                                for (int i = 0; i < values.Length; i++)
                                {
                                    if (i == values.Length - 1)
                                        newFilter.Append("[vendNum] = " + values[i]);
                                    else
                                        newFilter.Append("[vendNum] = " + values[i] + " OR ");
                                }
                                if (RadGrid1.MasterTableView.FilterExpression == "")
                                    RadGrid1.MasterTableView.FilterExpression = newFilter.ToString();
                                else
                                    RadGrid1.MasterTableView.FilterExpression = "((" + RadGrid1.MasterTableView.FilterExpression + ") AND (" + newFilter.ToString() + "))";
                                RadGrid1.Rebind();
                            }
                        }
                        break;
                    default:
                        break;
                }
            }
        }

ただし、これを行うと、カンマ区切りのリストでフィルタリングしようとすると、「ExpressionExpected」というエラーが表示され続けます。私はまだ単一のvendNumをフィルタリングすることができます。私FilterExpressionは期待通りに出てきます。コードがRadGrid1.Rebind()ステートメントで失敗しています。誰かがこれに以前に対処したことがありますか?どんな助けでも大歓迎です。

ありがとう、

アーロン

これを編集するのを忘れた

私は数週間前にこの問題を解決しました...RadGridの下で「EnableLinqExpressions」プロパティをfalseに設定する必要がありました。

4

1 に答える 1

8

私はこれをどこかでこの質問の修正として見ました。

追加してみてください:RadGrid1.EnableLinqExpressions = false;

于 2010-04-08T01:24:41.450 に答える