GRIDVIEW的筛选逻辑

来源:互联网 发布:爱普生r330清零软件 编辑:程序博客网 时间:2024/06/05 18:12

GRIDVIEW的筛选逻辑,其中funs为字段对应筛选器选项的名称,columns为对应字段的名称,vals为textbox所填的筛选数值,upper为筛选器的个数

  #region Helper Methods    public static string FilterCondition(string[] funcs,string[] columns,string[] vals,int upper)    {        string filterCondition = "";        for (int i = 0; i < upper; i++)        {            if (funcs[i] != String.Empty && funcs[i] != null)            {                switch (funcs[i])                {                    case "Contains":                        filterCondition += columns[i] + " LIKE '%" + vals[i] + "%'";                        break;                    case "DoesNotContain":                        filterCondition += columns[i] + " NOT LIKE '%" + vals[i] + "%'";                        break;                    case "StartsWith":                        filterCondition += columns[i] + " LIKE '" + vals[i] + "%'";                        break;                    case "EndsWith":                        filterCondition += "rtrim("+columns[i]+")" + " LIKE '%" + vals[i] + "'";                        break;                    case "EqualTo":                        filterCondition += columns[i] + " = " + vals[i];                        break;                    case "NotEqualTo":                        filterCondition += columns[i] + " != " + vals[i];                        break;                    case "GreaterThan":                        filterCondition += columns[i] + " > " + vals[i];                        break;                    case "LessThan":                        filterCondition += columns[i] + " < " + vals[i];                        break;                    //case "GreaterThanOrEqualTo":                    //    filterCondition += Columns[i] + " >= " + Vals[i];                    //    break;                    //case "LessThanOrEqualTo":                    //    filterCondition += Columns[i] + " <= " + Vals[i];                    //    break;                    //case "Between":                    //    break;                    //case "NotBetween":                    //    break;                    case "IsEmpty":                        filterCondition += columns[i] + " = ''";                        break;                    case "NotIsEmpty":                        filterCondition += columns[i] + " != ''";                        break;                    case "IsNull":                        filterCondition += columns[i] + " is null ";                        break;                    case "NotIsNull":                        filterCondition += columns[i] + " is not null";                        break;                    default:                        break;                }                //filterCondition added like clause and next filter is not null                 //appand " collate SQL_Latin1_General_Cp1_CS_AS and "                if ((funcs[i] == "Contains" || funcs[i] == "DoesNotContain" || funcs[i] == "StartsWith" ||                     funcs[i] == "EndsWith") &&(i < upper - 1 && funcs[i + 1] != null && filterCondition != String.Empty &&                     funcs[i + 1] != String.Empty && funcs[i + 1] != "NoFilter"))                    filterCondition += " collate SQL_Latin1_General_Cp1_CS_AS and ";                //filterCondition added non-like clause and next filter is not null                 //appand " and "                else if(i < upper - 1 && funcs[i + 1] != null && filterCondition != String.Empty &&                     funcs[i + 1] != String.Empty && funcs[i + 1] != "NoFilter")                    filterCondition += " and ";            }        }        //only filterCondition not empty and has % in the last clause that need appand collate SQL_Latin1_General_Cp1_CS_AS        if (filterCondition != String.Empty && filterCondition.LastIndexOf('%')>filterCondition.Length-3)            filterCondition += " collate SQL_Latin1_General_Cp1_CS_AS ";        return filterCondition;    }    #endregion


原创粉丝点击