Asp.net mvc 5 仅将图像添加到树视图中的一个节点

Asp.net mvc 5 仅将图像添加到树视图中的一个节点,asp.net-mvc-5,telerik,treeview,telerik-mvc,Asp.net Mvc 5,Telerik,Treeview,Telerik Mvc,我目前正在为一个客户请求修改一个树状视图控件(Telerik MVC Extensions)。他们的请求很简单:如果树中的某个项目有附件,请在节点旁边添加一个回形针来标识它 到目前为止,我已经能够做到这一点,但是,我发现了一个小问题。我可以将图像添加到具有附件的某些节点,但是,所有不具有附件的节点都不应该具有图像(我的意思是,它们应该在树中正常显示)。然而,我发现树上放置了一个与回形针图像大小相同的空白 是否有一种方法可以动态关闭此空白(如果不需要,也可以不添加图像Url)?下面是我执行此过程的

我目前正在为一个客户请求修改一个树状视图控件(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个月后,您可以临时想出一些东西