예제 #1
0
        /// <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);
        }
예제 #2
0
        /// <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;
        }
예제 #4
0
        /// <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);
        }
예제 #5
0
        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));
        }
예제 #6
0
        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);
        }
예제 #7
0
        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);
        }
예제 #8
0
        /// <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);
        }