/// <summary> /// 将枚举类型转化为下拉列表 /// </summary> /// <param name="self">枚举类型</param> /// <param name="value">value</param> /// <returns>下拉菜单数据列表</returns> public static List <ComboSelectListItem> ToListItems(this Type self, object value = null) { string[] names = null; //如果是枚举 if (self.IsEnum) { names = Enum.GetNames(self); } //如果是nullable的枚举 if (self.IsGenericType && self.GenericTypeArguments[0].IsEnum) { names = Enum.GetNames(self.GenericTypeArguments[0]); } //生成下拉菜单数据 List <ComboSelectListItem> rv = new List <ComboSelectListItem>(); if (names != null) { foreach (var name in names) { var newitem = new ComboSelectListItem { Text = PropertyHelper.GetEnumDisplayName(self, name), Value = name }; if (value != null && name == value.ToString()) { newitem.Selected = true; } rv.Add(newitem); } } return(rv); }
/// <summary> /// 将数据的List转化为下拉菜单数据List /// </summary> /// <typeparam name="T">源数据类</typeparam> /// <param name="self">源数据List</param> /// <param name="textField">指向text字段的表达式</param> /// <param name="valueField">指向value字段的表达式</param> /// <param name="selectedCondition">默认被选中的条件</param> /// <returns>下拉菜单数据List</returns> public static List <ComboSelectListItem> ToListItems <T>(this List <T> self , Expression <Func <T, object> > textField , Expression <Func <T, object> > valueField , Expression <Func <T, bool> > selectedCondition = null) { var rv = new List <ComboSelectListItem>(); if (self != null) { //循环列表中的数据 foreach (var item in self) { //获取textField的值作为text string text = textField.Compile().Invoke(item).ToString(); //获取valueField的值作为value string value = valueField.Compile().Invoke(item).ToString(); //添加到下拉菜单List中 ComboSelectListItem li = new ComboSelectListItem(); li.Text = text; li.Value = value; //如果有默认选择的条件,则将当前数据带入到判断表达式中,如果返回true,则将下拉数据的selected属性设为true if (selectedCondition != null) { if (selectedCondition.Compile().Invoke(item)) { li.Selected = true; } } rv.Add(li); } } return(rv); }
protected override void InitVM() { List <ComboSelectListItem> items = new List <ComboSelectListItem>(); ComboSelectListItem item = new ComboSelectListItem(); item.Text = "H5"; item.Value = "H5"; items.Add(item); ComboSelectListItem item2 = new ComboSelectListItem(); item2.Text = "原生页面"; item2.Value = "Native"; items.Add(item2); JumpType = items; }
/// <summary> /// 将枚举类型转化为下拉列表 /// </summary> /// <param name="self">枚举类型</param> /// <param name="value">value</param> /// <param name="pleaseSelect">pleaseSelect</param> /// <returns>下拉菜单数据列表</returns> public static List <ComboSelectListItem> ToListItems(this Type self, object value = null, bool pleaseSelect = false) { string[] names = null; Array values = null; //如果是枚举 if (self.IsEnum) { names = Enum.GetNames(self); values = Enum.GetValues(self); } //如果是nullable的枚举 if (self.IsGenericType && self.GenericTypeArguments[0].IsEnum) { names = Enum.GetNames(self.GenericTypeArguments[0]); values = Enum.GetValues(self.GenericTypeArguments[0]); } //生成下拉菜单数据 List <ComboSelectListItem> rv = new List <ComboSelectListItem>(); if (names != null) { for (int i = 0; i < names.Length; i++) { var name = names[i]; var newitem = new ComboSelectListItem { Text = PropertyHelper.GetEnumDisplayName(self, name), Value = ((int)values.GetValue(i)).ToString() }; if (value != null && name == value.ToString()) { newitem.Selected = true; } rv.Add(newitem); } } if (pleaseSelect == true) { rv.Insert(0, new ComboSelectListItem { Text = "请选择", Value = "" }); } return(rv); }
public ActionResult GetMenu() { var data = DC.Set <FrameworkModule>().Include(x => x.Actions).ToList(); List <ComboSelectListItem> rv = new List <ComboSelectListItem>(); foreach (var item in data) { ComboSelectListItem c = new ComboSelectListItem { Text = item.ModuleName, Value = item.ID.ToString(), Children = new List <ComboSelectListItem>() }; if (item.Actions != null) { foreach (var a in item.Actions) { c.Children.Add(new ComboSelectListItem { Text = a.ActionName, Value = a.ID.ToString() }); } } rv.Add(c); } return(Ok(rv)); }
public override void Process(TagHelperContext context, TagHelperOutput output) { output.TagName = "input"; output.TagMode = TagMode.StartTagOnly; output.Attributes.Add("type", "radio"); output.Attributes.Add("name", Field.Name); var modeltype = Field.Metadata.ModelType; var listitems = new List <ComboSelectListItem>(); if (Items?.Model == null) { if (modeltype.IsEnumOrNullableEnum()) { listitems = modeltype.ToListItems(Field.Model); } else if (modeltype == typeof(bool) || modeltype == typeof(bool?)) { listitems = Utils.GetBoolCombo(BoolComboTypes.Custom, (bool?)Field.Model, YesText, NoText); } } else { if (Items.Metadata.ModelType == typeof(List <ComboSelectListItem>)) { listitems = Items.Model as List <ComboSelectListItem>; foreach (var item in listitems) { if (item.Value.ToLower() == Field.Model?.ToString().ToLower()) { item.Selected = true; } } } else if (Items.Metadata.ModelType.IsList()) { var exports = (Items.Model as IList); foreach (var item in exports) { ComboSelectListItem newitem = new ComboSelectListItem(); newitem.Text = item?.ToString(); newitem.Value = item?.ToString(); if (item == Field.Model) { newitem.Selected = true; } listitems.Add(newitem); } } } if (listitems.Count > 0) { output.Attributes.Add("value", listitems[0].Value); output.Attributes.Add(new TagHelperAttribute("title", listitems[0].Text)); if (listitems[0].Selected) { output.Attributes.Add("checked", null); } } for (int i = 1; i < listitems.Count; i++) { var item = listitems[i]; var selected = item.Selected ? " checked" : " "; output.PostElement.AppendHtml($@" <input type=""radio"" name=""{Field.Name}"" value=""{item.Value}"" title=""{item.Text}"" {selected} />"); } base.Process(context, output); }
public override void Process(TagHelperContext context, TagHelperOutput output) { output.TagName = "div"; output.TagMode = TagMode.StartTagAndEndTag; output.Attributes.Clear(); output.Attributes.Add("div-for", "radio"); var modeltype = Field.Metadata.ModelType; var listItems = new List <ComboSelectListItem>(); if (Items?.Model == null) { var checktype = modeltype; if ((modeltype.IsGenericType && typeof(List <>).IsAssignableFrom(modeltype.GetGenericTypeDefinition()))) { checktype = modeltype.GetGenericArguments()[0]; } if (checktype.IsEnumOrNullableEnum()) { listItems = checktype.ToListItems(DefaultValue ?? Field.Model); } else if (checktype == typeof(bool) || checktype == typeof(bool?)) { bool?df = null; if (bool.TryParse(DefaultValue ?? "", out bool test) == true) { df = test; } listItems = Utils.GetBoolCombo(BoolComboTypes.Custom, df ?? (bool?)Field.Model, YesText, NoText); } } else { string sv = ""; if (DefaultValue == null) { sv = Field.Model?.ToString(); } else { sv = DefaultValue; } if (Items.Metadata.ModelType == typeof(List <ComboSelectListItem>)) { listItems = Items.Model as List <ComboSelectListItem>; foreach (var item in listItems) { if (item.Value.ToString().ToLower() == sv?.ToLower()) { item.Selected = true; } } } else if (Items.Metadata.ModelType.IsList()) { var exports = (Items.Model as IList); foreach (var item in exports) { ComboSelectListItem newitem = new ComboSelectListItem(); newitem.Text = item?.ToString(); newitem.Value = item?.ToString(); if (item?.ToString() == sv) { newitem.Selected = true; } listItems.Add(newitem); } } } for (int i = 0; i < listItems.Count; i++) { var item = listItems[i]; var selected = item.Selected ? " checked" : " "; output.PostContent.AppendHtml($@" <input type=""radio"" name=""{Field.Name}"" value=""{item.Value}"" title=""{item.Text}"" {selected} />"); } base.Process(context, output); }
/// <summary> /// 将枚举类型转化为下拉列表 /// </summary> /// <param name="self">枚举类型</param> /// <param name="value">value</param> /// <param name="pleaseSelect">pleaseSelect</param> /// <returns>下拉菜单数据列表</returns> public static List <ComboSelectListItem> ToListItems(this Type self, object value = null, bool pleaseSelect = false) { string[] names = null; Array values = null; //如果是枚举 if (self.IsEnum) { names = Enum.GetNames(self); values = Enum.GetValues(self); } //如果是nullable的枚举 if (self.IsGenericType && self.GenericTypeArguments[0].IsEnum) { names = Enum.GetNames(self.GenericTypeArguments[0]); values = Enum.GetValues(self.GenericTypeArguments[0]); } //生成下拉菜单数据 List <ComboSelectListItem> rv = new List <ComboSelectListItem>(); if (names != null) { for (int i = 0; i < names.Length; i++) { var name = names[i]; var newitem = new ComboSelectListItem { Text = PropertyHelper.GetEnumDisplayName(self, name), Value = ((int)values.GetValue(i)).ToString() }; if (value is string) { if (value != null) { string v = value.ToString(); var vs = v.Split(','); foreach (var item in vs) { if (item != null && (newitem.Value.ToString() == item.ToString()) || name == item.ToString()) { newitem.Selected = true; break; } } } } else if (value is IEnumerable it) { foreach (var item in it) { if (item != null && name == item.ToString()) { newitem.Selected = true; break; } } } else { if (value != null && name == value.ToString()) { newitem.Selected = true; } } rv.Add(newitem); } } if (pleaseSelect == true) { rv.Insert(0, new ComboSelectListItem { Text = Program._localizer["PleaseSelect"], Value = "" }); } return(rv); }