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); }
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); }