Пример #1
0
        public virtual IEnumerable <SelectListItem> GetFilterOptions <T, TValue>(IGridColumn <T, TValue> column)
        {
            List <SelectListItem> options = new List <SelectListItem>();
            Type type = Nullable.GetUnderlyingType(typeof(TValue)) ?? typeof(TValue);

            if (type == typeof(Boolean))
            {
                options.Add(new SelectListItem {
                    Value = "", Text = BooleanEmptyOptionText?.Invoke()
                });
                options.Add(new SelectListItem {
                    Value = "true", Text = BooleanTrueOptionText?.Invoke()
                });
                options.Add(new SelectListItem {
                    Value = "false", Text = BooleanFalseOptionText?.Invoke()
                });
            }
            else if (type.GetTypeInfo().IsEnum)
            {
                options.Add(new SelectListItem());
                options.AddRange(EnumHelper.GetSelectList(type));
            }

            return(options);
        }
Пример #2
0
        public virtual IEnumerable <SelectListItem> OptionsFor <T, TValue>(IGridColumn <T, TValue> column)
        {
            Type?type = GetElementType(typeof(TValue)) ?? typeof(TValue);
            List <SelectListItem> options = new List <SelectListItem>();

            type = Nullable.GetUnderlyingType(type) ?? type;

            if (type == typeof(Boolean))
            {
                options.Add(new SelectListItem {
                    Value = "", Text = BooleanEmptyOptionText?.Invoke()
                });
                options.Add(new SelectListItem {
                    Value = "true", Text = BooleanTrueOptionText?.Invoke()
                });
                options.Add(new SelectListItem {
                    Value = "false", Text = BooleanFalseOptionText?.Invoke()
                });
            }
            else if (type.IsEnum)
            {
                options.Add(new SelectListItem());

                IEnumerable <SelectListItem>?items = column.Grid
                                                     .ViewContext?
                                                     .HttpContext
                                                     .RequestServices
                                                     .GetRequiredService <IHtmlHelper>()
                                                     .GetEnumSelectList(type)
                                                     .OrderBy(item => item.Text);

                if (items != null)
                {
                    options.AddRange(items);
                }
            }

            return(options);
        }