我目前正在为客户请求修改树视图控件(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 };
}
没有/带有Image Url代码的屏幕截图:
答案 0 :(得分:0)
我终于找到了解决这个问题的方法。问题是我如何将我的数据添加到节点。原始逻辑是在获取数据以获取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;
此时,您现在可以返回节点。应该有附件图标的那些,以及那些不应该获胜的人。有趣的是,4个月后,你可以拿出袖口上的东西。