コード例 #1
0
        public void Construct(ApplicationFieldDefinition field, DataMap dataMap, Action <Result> onCompletion, IEnumerable <FilterExpression> adHocFilters)
        {
            if (field == null)
            {
                throw new ArgumentNullException("field");
            }
            if (dataMap == null)
            {
                throw new ArgumentNullException("dataMap");
            }
            if (onCompletion == null)
            {
                throw new ArgumentNullException("onCompletion");
            }
            if (adHocFilters == null)
            {
                throw new ArgumentNullException("adHocFilters");
            }

            _field        = field;
            _widget       = (LookupWidget)field.Widget();
            _dataMap      = dataMap;
            _onCompletion = onCompletion;
            _filters      = InitializeFilters(_dataMap, _widget, adHocFilters);
        }
コード例 #2
0
 public Result(ApplicationFieldDefinition field, LookupWidget widget, DataMap dataMap)
 {
     _field   = field;
     _widget  = widget;
     _dataMap = dataMap;
 }
コード例 #3
0
        private static IEnumerable <FilterExpression> InitializeFilters(DataMap dataMap, LookupWidget widget, IEnumerable <FilterExpression> adHocFilters)
        {
            var filters = new List <FilterExpression>();

            // Handles the metadata filters, which
            // can be either literals ("hardcoded")
            // or based on the data map current state.
            foreach (var filter in widget.Filters)
            {
                var value = string.IsNullOrEmpty(filter.Literal)
                    ? dataMap.Value(filter.TargetField)
                    : filter.Literal;

                filters.Add(new Exactly(filter.SourceField, value));
            }

            // Now let's append all ad-hoc filter.
            filters.AddRange(adHocFilters);

            return(filters);
        }