Exemplo n.º 1
0
        private static MvcHtmlString ForTreeEditor(HtmlHelper Html, FieldItem field, IEntityTree entity, Object htmlAttributes = null)
        {
            var fact = EntityFactory.CreateOperate(entity.GetType());
            var set  = entity.GetType().GetValue("Setting") as IEntityTreeSetting;

            if (set == null || set.Parent != field.Name)
            {
                return(null);
            }

            // 增加前端自定义属性方便修改魔方模板
            var atts = htmlAttributes.ToAttrDictionary();

            TryAddAttribute(atts, "class", "multiselect");
            //var atts = htmlAttributes == null
            //    ? new RouteValueDictionary()
            //    : htmlAttributes as IDictionary<String, Object>;
            //if(!atts.ContainsKey("class")) atts.Add("class", "multiselect");

            var root = entity.GetType().GetValue("Root") as IEntityTree;
            // 找到完整菜单树,但是排除当前节点这个分支
            var list = root.FindAllChildsExcept(entity as IEntityTree);
            var data = new SelectList(list, set.Key, "TreeNodeText", entity[field.Name]);

            return(Html.DropDownList(field.Name, data, atts));
        }
Exemplo n.º 2
0
 private void BindNode(IEntityTree tree, string blank, string textName, string valueName)
 {
     foreach (var item in tree.Childs)
     {
         this.TypeID.Items.Add(new ListItem(blank + item[textName], item[valueName] + ""));
         string blank2 = HttpUtility.HtmlDecode("&nbsp;&nbsp;&nbsp;&nbsp;" + blank);
         this.BindNode(item as IEntityTree, blank2, textName, valueName);
     }
 }
Exemplo n.º 3
0
        public void BuildTree(IEntityTree tree, string textName, string valueName)
        {
            string selectedValue = "0";

            this.TypeID.SelectedValue = selectedValue;
            this.Controls.Add(this.TypeID);
            this.TypeID.Items.Clear();
            this.TypeID.Items.Add(new ListItem("请选择     ", "0"));
            foreach (var item in tree.Childs)
            {
                this.TypeID.Items.Add(new ListItem(item[textName] + "", item[valueName] + ""));
                string blank = HttpUtility.HtmlDecode("&nbsp;&nbsp;&nbsp;&nbsp;");
                this.BindNode(item as IEntityTree, blank, textName, valueName);
            }
            this.TypeID.DataBind();
        }
Exemplo n.º 4
0
        private static IHtmlContent ForTreeEditor(IHtmlHelper Html, FieldItem field, IEntityTree entity)
        {
            //var fact = EntityFactory.CreateOperate(entity.GetType());
            var set = entity.GetType().GetValue("Setting") as IEntityTreeSetting;

            if (set == null || set.Parent != field.Name)
            {
                return(null);
            }

            var root = entity.GetType().GetValue("Root") as IEntityTree;
            // 找到完整菜单树,但是排除当前节点这个分支
            var list = root.FindAllChildsExcept(entity);
            var data = new SelectList(list, set.Key, "TreeNodeText", entity[field.Name]);

            return(Html.DropDownList(field.Name, data, new { @class = "multiselect" }));
        }
        public static async Task <TModel> AddItemAsync <TModel>(this IEntityTree entity, int?parent, Expression <Func <TModel, bool> > filter, string format = null) where TModel : class, IEntityTree, new()
        {
            var _ordem = 0;

            var dataService = AppHelper.Resolve <DbDataContext>();
            var _path       = "";
            var _level      = 0;
            var _count      = await dataService.CountAsync <TModel>(filter);

            _count++;
            var nivel = _count;

            _ordem = nivel * 1000;
            _path  = $"{_count}";
            if (parent != null)
            {
                var _parent = await dataService.LoadAsync <TModel>(parent);

                _ordem = (_parent.Ordem + _count) + 1;
                _level = _parent.Level;
                _path  = _parent.Path;
                _path  = $"{_path}.{_count}";
            }

            if (format != null)
            {
                _path = ApplyFormat(_level, _count, _path, format);
            }
            var record = new TModel();

            _level++;
            record.InitPath(_path, _level);
            record.Ancestral = parent;
            record.Ordem     = _ordem;
            return(record);
        }