加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net – RadGrid自定义过滤器

发布时间:2020-12-16 06:36:02 所属栏目:asp.Net 来源:网络整理
导读:我正在尝试为我的RadGrid添加自定义过滤器.我有一个专栏,vendNum,我想让用户使用以逗号分隔的列表过滤多个vendNum.基本上,我想要与SQL中的“in”语句相同的功能(其中vendNum在(X,Y,Z)中). 我按照this site上的教程,提出了以下代码放在我的RadGrid1_ItemComma
我正在尝试为我的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;
                }
            }
        }

但是,当我尝试使用逗号分隔列表进行过滤时,执行此操作会不断给出错误“Expression Expected”.我仍然可以过滤一个vendNum.我的FilterExpression确实按预期出现.代码在RadGrid1.Rebind()语句中失败.以前有人处理过这个吗?任何帮助是极大的赞赏.

谢谢,

亚伦

忘了编辑这个

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

解决方法

我在某处看到这是对这个问题的解决方法.

尝试添加:RadGrid1.EnableLinqExpressions = false;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读