Beispiel #1
0
 public static string ToODataFilterString <T>(this IEnumerable <FilterDescriptor> columns, RadzenDataGrid <T> dataGrid)
 {
Beispiel #2
0
        private static string GetColumnODataFilter <T>(RadzenDataGrid <T> dataGrid, FilterDescriptor column, bool second = false)
        {
            string property = column.Property.Replace('.', '/');

            var columnFilterOperator = !second ? column.FilterOperator : column.SecondFilterOperator;

            string value = !second ? (string)Convert.ChangeType(column.FilterValue, typeof(string)) :
                           (string)Convert.ChangeType(column.SecondFilterValue, typeof(string));

            var filterPropertyType = column.Property.GetType();

            if (dataGrid.FilterCaseSensitivity == FilterCaseSensitivity.CaseInsensitive && filterPropertyType == typeof(string))
            {
                property = $"tolower({property})";
            }

            if (filterPropertyType == typeof(string))
            {
                if (!string.IsNullOrEmpty(value) && columnFilterOperator == FilterOperator.Contains)
                {
                    return(dataGrid.FilterCaseSensitivity == FilterCaseSensitivity.CaseInsensitive ?
                           $"contains({property}, tolower('{value}'))" :
                           $"contains({property}, '{value}')");
                }
                else if (!string.IsNullOrEmpty(value) && columnFilterOperator == FilterOperator.DoesNotContain)
                {
                    return(dataGrid.FilterCaseSensitivity == FilterCaseSensitivity.CaseInsensitive ?
                           $"not(contains({property}, tolower('{value}')))" :
                           $"not(contains({property}, '{value}'))");
                }
                else if (!string.IsNullOrEmpty(value) && columnFilterOperator == FilterOperator.StartsWith)
                {
                    return(dataGrid.FilterCaseSensitivity == FilterCaseSensitivity.CaseInsensitive ?
                           $"startswith({property}, tolower('{value}'))" :
                           $"startswith({property}, '{value}')");
                }
                else if (!string.IsNullOrEmpty(value) && columnFilterOperator == FilterOperator.EndsWith)
                {
                    return(dataGrid.FilterCaseSensitivity == FilterCaseSensitivity.CaseInsensitive ?
                           $"endswith({property}, tolower('{value}'))" :
                           $"endswith({property}, '{value}')");
                }
                else if (!string.IsNullOrEmpty(value) && columnFilterOperator == FilterOperator.Equals)
                {
                    return(dataGrid.FilterCaseSensitivity == FilterCaseSensitivity.CaseInsensitive ?
                           $"{property} eq tolower('{value}')" :
                           $"{property} eq '{value}'");
                }
                else if (!string.IsNullOrEmpty(value) && columnFilterOperator == FilterOperator.NotEquals)
                {
                    return(dataGrid.FilterCaseSensitivity == FilterCaseSensitivity.CaseInsensitive ?
                           $"{property} ne tolower('{value}')" :
                           $"{property} ne '{value}'");
                }
            }
            else if (typeof(IEnumerable).IsAssignableFrom(column.Property.GetType()) && filterPropertyType != typeof(string))
            {
            }
            else if (PropertyAccess.IsNumeric(filterPropertyType))
            {
                return($"{property} {ODataFilterOperators[columnFilterOperator]} {value}");
            }
            else if (filterPropertyType == typeof(bool) || filterPropertyType == typeof(bool?))
            {
                return($"{property} eq {value.ToLower()}");
            }
            else if (filterPropertyType == typeof(DateTime) ||
                     filterPropertyType == typeof(DateTime?) ||
                     filterPropertyType == typeof(DateTimeOffset) ||
                     filterPropertyType == typeof(DateTimeOffset?))
            {
                return($"{property} {ODataFilterOperators[columnFilterOperator]} {DateTime.Parse(value, null, System.Globalization.DateTimeStyles.RoundtripKind):yyyy-MM-ddTHH:mm:ss.fffZ}");
            }
            else if (filterPropertyType == typeof(Guid) || filterPropertyType == typeof(Guid?))
            {
                return($"{property} {ODataFilterOperators[columnFilterOperator]} {value}");
            }

            return(string.Empty);
        }
Beispiel #3
0
 public Testable()
 {
     Grid = new RadzenDataGrid <TestModel>();
 }