我有刷新局部视图(树视图)的问题。将数据添加到数据库后,数据已成功存储,但树视图未更新。有了它,我使用了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] 删除。
我来说两句