我有一个ASP:TreeView,我希望根据文件扩展名在图标上显示。这是我目前的代码。我也尝试过使用相同代码的ondatabound,但这两种方法都不起作用。
protected void MyTree_TreeNodeExpanded(object sender, TreeNodeEventArgs e)
{
string fileExt = Path.GetExtension(e.Node.Selected.ToString());
if (fileExt == ".pdf")
{
MyTree.LeafNodeStyle.ImageUrl = "/Images/icons/pdf_icon.png";
}
else
{
MyTree.LeafNodeStyle.ImageUrl = "/Images/icons/document_icon.png";
}
}
上面的脚本不会遍历文件结构。在下面的示例中,pdf文件应具有pdf图标,其余文件图标。
答案 0 :(得分:1)
Server.MapPath 指定要映射到物理的相对或虚拟路径,但ImageUrl值必须是绝对URL或相对URL。
你需要
替换
MyTree.LeafNodeStyle.ImageUrl = Server.MapPath("~/Images/icons/pdf_icon.png");
与
MyTree.LeafNodeStyle.ImageUrl = "/Images/icons/pdf_icon.png";
修改强>
- e.Node
返回示例中“护理”节点的展开节点,但您需要循环浏览e.Node.ChildNodes
。
- e.Node.Selected
返回应使用e.Node.Text
获取节点文本的布尔值
- MyTree.LeafNodeStyle.ImageUrl
更改树中的所有叶子样式,因此您需要为每个叶子更改ImageUrl
。
这段代码必须完成这项工作。
protected void MyTree_TreeNodeExpanded(object sender, TreeNodeEventArgs e)
{
for (int i = 0; i < e.Node.ChildNodes.Count; i++)
{
if (e.Node.ChildNodes[i].ChildNodes.Count != 0)
continue;
string fileExt = Path.GetExtension(e.Node.ChildNodes[i].Text);
if (fileExt == ".pdf")
{
e.Node.ChildNodes[i].ImageUrl = "/Images/icons/pdf_icon.png";
}
else
{
e.Node.ChildNodes[i].ImageUrl = "/Images/icons/document_icon.png";
}
}
}