【问题标题】:RadGrid Custom FilterRadGrid 自定义过滤器
【发布时间】:2011-01-24 04:42:52
【问题描述】:

我正在尝试向我的 RadGrid 添加自定义过滤器。我有一个列,vendNum,我想允许用户使用逗号分隔的列表过滤多个 vendNum。基本上,我想要与 SQL 中的“in”语句相同的功能(其中 vendNum 在 (X,Y,Z))。

我遵循this site 上的教程,并想出了以下代码来放置在我的 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;
                }
            }
        }

但是,当我尝试使用逗号分隔的列表进行过滤时,这样做会不断给我一个错误“预期表达式”。我仍然能够过滤单个vendNum。我的FilterExpression 确实按预期出现。代码在 RadGrid1.Rebind() 语句上失败。有没有人处理过这个问题?非常感谢任何帮助。

谢谢,

亚伦

忘记编辑了

我几周前解决了这个问题...我不得不在 RadGrid 下将“EnableLinqExpressions”属性设置为 false。

【问题讨论】:

    标签: asp.net telerik radgrid


    【解决方案1】:

    我认为这是在某处解决此问题的方法。

    尝试添加: RadGrid1.EnableLinqExpressions = false;

    【讨论】:

    • 是的,这正是我必须做的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-17
    • 1970-01-01
    相关资源
    最近更新 更多