ASP.NET MVC 4中的Treeview

普希金

我有刷新局部视图(树视图)的问题。将数据添加到数据库后,数据已成功存储,但树视图未更新。有了它,我使用了jQuery库。这是CafedraTreeModel模型的代码:

public class CafedraTreeModel
{

    public CafedraTreeModel()
    {
        Root = new TreeItem(0, "Root");
    }
    public TreeItem Root { get; set; }
}

public class TreeItem
{
    public TreeItem(int id, string name)
    {
        Id = id;
        Name = name;
        Childs = new List<TreeItem>();
    }

    public TreeItem AddChild(int Id, string Name)
    {
        Childs.Add(new TreeItem(Id, Name));
        return Childs.Last();
    }

    public int Id { get; set; }
    public string Name { get; set; }
    public List<TreeItem> Childs { get; set; }

这是CafedraTreeMaker控制器的代码

   public static class CafedraTreeMaker
{
    static CafedraTreeMaker()
    {
        RefreshCafedraTreeModel();
        CurrentNirId = -1;
    }

    public static void RefreshCafedraTreeModel()
    {
        CafedraTreeModel tree = new CafedraTreeModel();
        TreeItem root = tree.Root;

        IEnumerable<Cafedras> modelCafedra;

        NIRDBEntities16 db = new NIRDBEntities16();
        modelCafedra = db.Cafedras;

        foreach (var caf in modelCafedra)
        {
            var currentCafedra = root.AddChild(caf.Id, caf.Name);
            foreach (var peoples in caf.Peoples)
            {
                var currentPeoples = currentCafedra.AddChild(peoples.Id, peoples.Lastname + peoples.Firstname + peoples.Middlename);
                foreach (var nir in peoples.NIRs)
                {
                    currentPeoples.AddChild(nir.Id, nir.Shifr);
                }
            }
        }
        CurrentCafedraTree = tree;
    }
    public static CafedraTreeModel CurrentCafedraTree { get; private set; }
    public static int CurrentNirId { get; set; }

public class TreeItem
{
    public TreeItem(int id, string name)
    {
        Id = id;
        Name = name;
        Childs = new List<TreeItem>();
    }

    public TreeItem AddChild(int Id, string Name)
    {
        Childs.Add(new TreeItem(Id, Name));
        return Childs.Last();
    }

    public int Id { get; set; }
    public string Name { get; set; }
    public List<TreeItem> Childs { get; set; }
}

这是LeftPartialView部分视图的代码:

<div class="tree-block">

@{
    var tree = CafedraTreeMaker.CurrentCafedraTree;
    var currentNirId = CafedraTreeMaker.CurrentNirId;
}
<div class="well tree-style">
    <div style="overflow-y: auto; overflow-x: hidden; height: 500px;">
        <ul class="nav nav-list">
            @foreach (var caf in tree.Root.Childs)
            {
                bool openCaf = caf.Childs.Any(c => c.Childs.Any(g => g.Id == currentNirId));
                string cssCafClass = openCaf ? "tree-open" : "tree-close";
                <li>
                    <label class="tree-toggler nav-header">@caf.Name</label>
                    <ul class="nav nav-list tree @cssCafClass">
                        @foreach (var peoples in caf.Childs)
                        {
                            bool openPeoples = peoples.Childs.Any(g => g.Id == currentNirId);
                            string cssPeoplesClass = openPeoples ? "tree-open" : "tree-close";
                            <li>
                                <label class="tree-toggler nav-header">@peoples.Name</label>
                                <ul class="nav nav-list tree @cssPeoplesClass">
                                    @foreach (var nir in peoples.Childs)
                                    {
                                        bool selectedNir = nir.Id == currentNirId;
                                        string cssNirClass = selectedNir ? "tree-selected" : "tree-unselected";
                                        <li class="@cssNirClass">
                                            @Html.ActionLink(nir.Name, "NIRInfo", "NIR", new { id = nir.Id }, null)
                                        </li>
                                    }
                                </ul>
                            </li>
                        }
                    </ul>
                </li>
            }
        </ul>
    </div>
</div>

普希金

在局部视图的“部分”中

@{
    CafedraTreeMaker.RefreshCafedraTreeModel();
    var tree = CafedraTreeMaker.CurrentCafedraTree;        
    int currentNirId = CafedraTreeMaker.CurrentNirId;
}` I added method ==CafedraTreeMaker.RefreshCafedraTreeModel();== and its work.

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章