Example #1
0
        private static void DoDataSourceRequestRefining(DataSourceRequest request, Kendo.Mvc.Infrastructure.Implementation.FilterDescriptorCollection filterDescriptorCollection, Type viewModelType)
        {
            IFilterDescriptor filterItem = null;

            foreach (var item in filterDescriptorCollection)
            {
                filterItem = item as Kendo.Mvc.FilterDescriptor;
                if (filterItem == null)
                {
                    var compFilterItem = item as Kendo.Mvc.CompositeFilterDescriptor;


                    if (CheckIfFilteritemIsFromViewModel((compFilterItem.FilterDescriptors[0] as Kendo.Mvc.FilterDescriptor).Member, viewModelType))
                    {
                        _viewModelFilterItems.Add(compFilterItem);
                    }
                }
                else if (CheckIfFilteritemIsFromViewModel((filterItem as Kendo.Mvc.FilterDescriptor).Member, viewModelType))
                {
                    //Adding ViewModel filter to its respective list.
                    _viewModelFilterItems.Add(filterItem);
                }
            }
            if (_viewModelFilterItems.Count != 0)
            {
                foreach (var fiItem in _viewModelFilterItems)
                {
                    //TODO: Omit the filter descriptor entry from DataSourceRequest
                    RemoveFilterDescriptorFromDataSourceResult(request, fiItem);
                }
            }
        }
Example #2
0
        /// <summary>
        /// Investigates for the fields which are not in Model but in its respective ViewModel , and clears the incoming DataSourceRequest from the fields which are not going to be used in
        /// the Query parsing based on Model fields and , eventually , returns DataSourceRequest object which solely include ViewModel fields.
        /// </summary>
        /// <typeparam name="TModel"></typeparam>
        /// <typeparam name="ViewModel.IViewModel<TModel>"></typeparam>
        /// <param name="request"></param>
        /// <returns></returns>
        private static IEnumerable <Kendo.Mvc.IFilterDescriptor> RefineDataSource(this DataSourceRequest request, Type entityViewModelType)
        {
            _viewModelFilterItems = new List <Kendo.Mvc.IFilterDescriptor>();
            var viewModelFields = entityViewModelType;

            if (typeof(IViewModel).IsAssignableFrom(entityViewModelType))
            {
                var filters = (request.Filters as List <Kendo.Mvc.IFilterDescriptor>);

                foreach (var filterItem in filters)
                {
                    if (filterItem is Kendo.Mvc.CompositeFilterDescriptor)
                    {
                        var filterDescriptors = (filterItem as Kendo.Mvc.CompositeFilterDescriptor).FilterDescriptors;
                        DoDataSourceRequestRefining(request, filterDescriptors, entityViewModelType);
                        var compositeFilterDescriptor = filterItem as Kendo.Mvc.CompositeFilterDescriptor;
                    }
                    else if (filterItem is Kendo.Mvc.FilterDescriptor)
                    {
                        var filterCollection = new Kendo.Mvc.Infrastructure.Implementation.FilterDescriptorCollection();
                        filterCollection.Add(filterItem as Kendo.Mvc.FilterDescriptor);
                        DoDataSourceRequestRefining(request, filterCollection, entityViewModelType);
                        break;
                    }
                }
            }
            return(_viewModelFilterItems);
        }
Example #3
0
        public static Dictionary <string, object> GetFilterValues(this List <Kendo.Mvc.IFilterDescriptor> Filters)
        {
            var dictionary     = new Dictionary <string, object>();
            var rootFilterItem = (Filters as List <Kendo.Mvc.IFilterDescriptor>).First();


            if (rootFilterItem is Kendo.Mvc.CompositeFilterDescriptor)
            {
                Kendo.Mvc.Infrastructure.Implementation.FilterDescriptorCollection filterDescriptors = (rootFilterItem as Kendo.Mvc.CompositeFilterDescriptor).FilterDescriptors;
                DataSourceRequestValueExtensions.ExtractCompositeFilterDescriptorValues(dictionary, filterDescriptors);
            }
            else if (rootFilterItem is Kendo.Mvc.FilterDescriptor)
            {
                Kendo.Mvc.FilterDescriptor simpleItem = (Kendo.Mvc.FilterDescriptor)rootFilterItem;
                DataSourceRequestValueExtensions.ExtractSimpleFilterDescriptorValues(dictionary, simpleItem);
            }

            return(dictionary);
        }
Example #4
0
 private static void ExtractCompositeFilterDescriptorValues(Dictionary <string, object> dictionary, Kendo.Mvc.Infrastructure.Implementation.FilterDescriptorCollection filterDescriptors)
 {
     foreach (var filterItem in filterDescriptors)
     {
         if (filterItem is Kendo.Mvc.CompositeFilterDescriptor)
         {
             var fDescriptors = (filterItem as Kendo.Mvc.CompositeFilterDescriptor).FilterDescriptors;
             ExtractCompositeFilterDescriptorValues(dictionary, fDescriptors);
         }
         else if (filterItem is Kendo.Mvc.FilterDescriptor)
         {
             var sItem = (Kendo.Mvc.FilterDescriptor)filterItem;
             ExtractSimpleFilterDescriptorValues(dictionary, sItem);
         }
     }
 }