Asp.net mvc 5 仅将图像添加到树视图中的一个节点
我目前正在为一个客户请求修改一个树状视图控件(Telerik MVC Extensions)。他们的请求很简单:如果树中的某个项目有附件,请在节点旁边添加一个回形针来标识它 到目前为止,我已经能够做到这一点,但是,我发现了一个小问题。我可以将图像添加到具有附件的某些节点,但是,所有不具有附件的节点都不应该具有图像(我的意思是,它们应该在树中正常显示)。然而,我发现树上放置了一个与回形针图像大小相同的空白 是否有一种方法可以动态关闭此空白(如果不需要,也可以不添加图像Url)?下面是我执行此过程的代码(在树的扩展方法上完成,因为只有底层显示附件) 导航控制器Asp.net mvc 5 仅将图像添加到树视图中的一个节点,asp.net-mvc-5,telerik,treeview,telerik-mvc,Asp.net Mvc 5,Telerik,Treeview,Telerik Mvc,我目前正在为一个客户请求修改一个树状视图控件(Telerik MVC Extensions)。他们的请求很简单:如果树中的某个项目有附件,请在节点旁边添加一个回形针来标识它 到目前为止,我已经能够做到这一点,但是,我发现了一个小问题。我可以将图像添加到具有附件的某些节点,但是,所有不具有附件的节点都不应该具有图像(我的意思是,它们应该在树中正常显示)。然而,我发现树上放置了一个与回形针图像大小相同的空白 是否有一种方法可以动态关闭此空白(如果不需要,也可以不添加图像Url)?下面是我执行此过程的
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult GetNextTreeViewLevel(TreeViewItem node)
{
...
//If bottom layer, then execute the following
var data = _TreeRepo.GetProcessesByParcel(int.Parse(values[1]), cntTreeList);
nodes = from item in data
select new TreeViewItem
{
Text = item.strProcess,
Value = "PR" + "," + item.cntProcess.ToString(),
LoadOnDemand = false,
Enabled = true,
Selected = SelectedSearchResult.ToString().Length > 0
&& SelectedSearchResult.ToString().Split('~').Length > 3
&& decimal.Parse(SelectedSearchResult.ToString()
.Split('~')
.Last()
.Substring(2)) == item.cntProcess
ImageUrl = item.ysnHasAttachment.HasValue && item.ysnHasAttachment.Value == 1
? @"/Content/NewImages/attachment.png"
: string.Empty
};
return new JsonResult { Data = nodes };
}
没有/带有图像Url代码时的屏幕截图:
我终于想出了解决这个问题的办法。问题是如何将数据添加到节点。原始逻辑是在获取数据以获取IEnumerable对象后执行Linq查询 因此,每个节点都试图添加一个图像(即使没有图像)。因此,空间看起来很奇怪。下面是我如何修改此逻辑以正确获取数据
var processNodes = new List<TreeViewItem>();
var data = _TreeRepo.GetProcessesByParcel(int.Parse(values[1]), cntTreeList);
foreach (var item in data)
{
#region Process has at least one Attachment
if (item.ysnHasAttachment.HasValue && item.ysnHasAttachment.Value == 1)
processNodes.Add(new TreeViewItem
{
Text = item.strProcess,
Value = "PR" + "," + item.cntProcess.ToString(),
LoadOnDemand = false,
Enabled = true,
Selected = SelectedSearchResult.ToString().Length > 0
&& SelectedSearchResult.ToString().Split('~').Length > 3
&& decimal.Parse(SelectedSearchResult.ToString()
.Split('~')
.Last()
.Substring(2)) == item.cntProcess,
ImageUrl = "/Content/NewImages/smallAttachment.png"
});
#endregion
#region Process has no Attachments
else
processNodes.Add(new TreeViewItem
{
Text = item.strProcess,
Value = "PR" + "," + item.cntProcess.ToString(),
LoadOnDemand = false,
Enabled = true,
Selected = SelectedSearchResult.ToString().Length > 0
&& SelectedSearchResult.ToString().Split('~').Length > 3
&& decimal.Parse(SelectedSearchResult.ToString()
.Split('~')
.Last()
.Substring(2)) == item.cntProcess
}
#endregion
}
nodes = processNodes;
var processNodes=new List();
var data=_TreeRepo.GetProcessesByParcel(int.Parse(值[1]),cntTreeList);
foreach(数据中的var项)
{
#区域进程至少有一个附件
if(item.ysnHasAttachment.HasValue&&item.ysnHasAttachment.Value==1)
processNodes.Add(新的TreeViewItem)
{
Text=item.strProcess,
Value=“PR”+,“+item.cntProcess.ToString(),
LoadOnDemand=false,
启用=真,
Selected=SelectedSearchResult.ToString()。长度>0
&&SelectedSearchResult.ToString().Split(“~”).Length>3
&&Parse(SelectedSearchResult.ToString()
.Split(“~”)
.Last()
.Substring(2))==item.cntProcess,
ImageUrl=“/Content/NewImages/smallAttachment.png”
});
#端区
#区域进程没有附件
其他的
processNodes.Add(新的TreeViewItem)
{
Text=item.strProcess,
Value=“PR”+,“+item.cntProcess.ToString(),
LoadOnDemand=false,
启用=真,
Selected=SelectedSearchResult.ToString()。长度>0
&&SelectedSearchResult.ToString().Split(“~”).Length>3
&&Parse(SelectedSearchResult.ToString()
.Split(“~”)
.Last()
.Substring(2))==item.cntProcess
}
#端区
}
节点=进程节点;
此时,您可以返回节点。那些应该有附件图标的节点将返回,而那些不应该有附件图标的节点将不返回。有趣的是,4个月后,您可以临时想出一些东西