How to use Kendo UI Grid with ToDataSourceResult(), IQueryable, ViewModel and AutoMapper?

前端 未结 6 1651
轻奢々
轻奢々 2021-02-02 01:00

What is the best approach to load/filter/order a Kendo grid with the following classes:

Domain:

public class Car
{
    public virtual in         


        
6条回答
  •  刺人心
    刺人心 (楼主)
    2021-02-02 01:40

    František's solution is very nice! But be careful with casting Filters to FilterDescriptor. Some of them can be composite.

    Use this implementation of DataSourceRequestExtensions instead of František's:

    public static class DataSourceRequestExtensions
    {
        /// 
        /// Enable flattened properties in the ViewModel to be used in DataSource.
        /// 
        public static void Deflatten(this DataSourceRequest dataSourceRequest)
        {
            DeflattenFilters(dataSourceRequest.Filters);
    
            foreach (var sortDescriptor in dataSourceRequest.Sorts)
            {
                sortDescriptor.Member = DeflattenString(sortDescriptor.Member);
            }
        }
    
        private static void DeflattenFilters(IList filters)
        {
            foreach (var filterDescriptor in filters)
            {
                if (filterDescriptor is CompositeFilterDescriptor)
                {
                    var descriptors
                        = (filterDescriptor as CompositeFilterDescriptor).FilterDescriptors;
                    DeflattenFilters(descriptors);
                }
                else
                {
                    var filter = filterDescriptor as FilterDescriptor;
                    filter.Member = DeflattenString(filter.Member);
                }
            }
        }
    
        private static string DeflattenString(string source)
        {
            return source.Replace('_', '.');
        }
    }
    

提交回复
热议问题