代码之家  ›  专栏  ›  技术社区  ›  Aaron

radgrid自定义过滤器

  •  4
  • Aaron  · 技术社区  · 15 年前

    我正在尝试将自定义筛选器添加到我的radgrid中。我有一个名为vendnum的列,我希望允许用户使用逗号分隔的列表筛选多个vendnum。基本上,我想要与sql中的“in”语句(其中vendnum in(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。

    1 回复  |  直到 10 年前
        1
  •  8
  •   Chris    15 年前

    我认为这是某个地方解决这个问题的方法。

    尝试添加: radgrid1.enableLinqExpressions=错误;