【问题标题】:Display an image for a TreeNode显示 TreeNode 的图像
【发布时间】:2014-07-02 08:47:27
【问题描述】:

我尝试在 Treeview 的节点上显示图像。 Treeview 位于 ascx 控件中,因为我需要多次使用它。

我使用以下代码:

 <asp:TreeView ID="FolderTree" runat="server"  BackColor="White">
            <NodeStyle ForeColor="Black" ImageUrl="~/App_GlobalResources/folderClosed.png" />
            <ParentNodeStyle ImageUrl="~/App_GlobalResources/folderOpen.png" />
            <RootNodeStyle ImageUrl="~/App_GlobalResources/folderOpen.png" />
        </asp:TreeView>

这个代码似乎适合我,它也显示在设计器中。

但是当我启动页面时,没有显示一张图片。只有默认的折叠按钮可见。 我做错了什么?

非常感谢。

编辑:我添加了如何填充控件的代码

 private void Page_Load(object sender, System.EventArgs e)
    {
        try
        {
            if (!Page.IsPostBack)
            {
                var devData = Foo.GetDevices(); // returns a list with all devices
                    foreach (string temp in devData)
                    {
                        this.FolderTree.Nodes.Add(new TreeNode() { Text = temp, ImageUrl = "~/App_GlobalResources/folderOpen.png" });
                    }
            }
        }
        catch(Exception error)
        {
            //errorhandling
        }
    }

编辑 2:我假设我有那个错误:forums.asp.net/t/943367.aspx 但建议的解决方案不起作用! (见上面的代码,我已经通过代码设置了值。有人知道解决方案/修补程序(在 webusercontrol(.ascx) 中使用)吗?

我也尝试过(在我的基础站点上):

 protected override void OnSaveStateComplete(EventArgs e)
    {
        foreach (TreeNode tmpNode in this.LeftSelectControl.AccessFolderView.Nodes) //AccessFolderView = var, which contains the treeview of the ascx (to access it)
        {
            tmpNode.ImageUrl = "~/App_GlobalResources/folderOpen.png";
        }
    }

【问题讨论】:

  • 如何填充树?
  • 按代码。我可以添加它。等一下。
  • @Arion:我添加了基本代码。FileSystemInteract.GetDevices();返回一个包含所有当前连接的设备名称的列表(“C:\\”...等)如果用户折叠一个节点,有一个类似的方法可以添加包含文件夹的子节点。

标签: c# css asp.net iis treeview


【解决方案1】:

使用DHTMLX Tree View 一个在 C# Fluidly 中很好地结合的开源 javascript 库。它将生成带有图像的漂亮树视图。

在 C# aspx 页面中使用非常简单。

Click Here for Dhtmlx tree

【讨论】:

    【解决方案2】:

    从未按照您设置 TreeView 的方式进行操作。 但这就是我为 Treeview 设置样式的方式。希望对你有帮助。

    <asp:TreeView ID="treeView" runat="server" NodeIndent="20" ExpandDepth="0" NodeStyle-HorizontalPadding="2"
                ShowLines="true" ExpandImageUrl="../images/Open_Folder.png" CollapseImageUrl="../images/Close_Folder.png"
                ForeColor="Black">
    </asp:TreeView>
    

    【讨论】:

    • 搞笑:我试过了,它在设计器中正确显示,但如果我启动页面什么都没有,只显示默认值
    • 没有效果。我还尝试了图片的硬编码和动态路径
    • 当我用我的图像路径替换图像路径时,它工作得很好。如果您可以验证图像路径以及图像是否存在于文件夹中并包含在项目中。或者尝试用“../”替换“~”
    • 他们是 100% 好的。我发现以下内容:forums.asp.net/t/943367.aspx Thsi 似乎是一个错误。 Sdly 看来我什么都做不了,即使在代码中设置路径也不起作用:(
    【解决方案3】:

    我找到了解决方案:不要使用 App_GlobalResources。

    我不会将此标记为答案,因为这是我犯的一个愚蠢的错误。您只能在服务器端访问 App_* 文件夹,而不能在客户端访问。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-10-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多