示例#1
0
        public QueryController()
        {
            lockObject = new object();

            filtersForColumns = new Dictionary<string, FilterData>();
            query = new Query();
        }
        public void CreateFilter(ref Query query)
        {
            StringBuilder filter = new StringBuilder();

            foreach (KeyValuePair<string, FilterData> kvp in filtersForColumns)
            {
                StringBuilder partialFilter = createSingleFilter(kvp.Value);

                if (filter.Length > 0 && partialFilter.Length > 0) filter.Append(" AND ");

                if (partialFilter.Length > 0)
                {
                    string valuePropertyBindingPath = String.Empty;
                    string[] paths = kvp.Value.ValuePropertyBindingPath.Split(new Char[] { '.' });

                    foreach (string p in paths)
                    {
                        if (valuePropertyBindingPath != String.Empty)
                        {
                            valuePropertyBindingPath += ".";
                        }

                        valuePropertyBindingPath += p;

                        filter.Append(valuePropertyBindingPath + " != null AND ");//eliminate: Nullable object must have a value and object fererence not set to an object                        
                    }
                }

                filter.Append(partialFilter);
            }

            //init query
            query.FilterString    = filter.ToString();
            query.QueryParameters = Parameters;
        }