ASP.NET——如何使用来自 ASHX 处理程序的 XML 数据响应填充 TreeView 控件

标签 asp.net xml treeview xmldatasource

我有一个返回 XML 响应的 ASHX 处理程序 (FileStructureXML.ashx)。

现在我需要从 ASHX 处理程序获取 XML 响应并将其用作我的 ASPX 页面的数据源。

如果我将 XMLDataSource 指向服务器上的静态 XML 文件, TreeView 将按预期填充。但是,如果我将 XMLDataSource 指向 ASHX 处理程序而不是服务器上的静态 XML 文件,它就不起作用。

如有任何帮助,我们将不胜感激。

<body>
    <form id="form1" runat="server">
    <div>

        <asp:TreeView ID="TreeView_Folders" runat="server" DataSourceID="FileXML">
            <DataBindings>
                <asp:TreeNodeBinding DataMember="Directory" TextField="Name" />
                <asp:TreeNodeBinding DataMember="File" TextField="Name" />
            </DataBindings>        
        </asp:TreeView> 
    </div>
    <div>
        <asp:XmlDataSource ID="FileXML" runat="server" DataFile="FileStructureXML.ashx">
        </asp:XmlDataSource>
    </div>
    </form>
</body>

最佳答案

我认为 XmlDataSource 仅适用于实际文件,不适用于 URL。您可以通过不指定 DataFile 属性并在代码隐藏中动态加载 Data 属性来解决此问题。我认为 FirstChild.OuterXml 选择是正确的,但您可能需要进行试验。我不在可以测试它的地方。

XmlDocument treeDoc = new XmlDocument();
treeDoc.Load( "~/FileStructureXML.ashx" ); // this takes a URL
FileXml.Data = treeDoc.FirstChild.OuterXml; // everything after the xml definition

关于ASP.NET——如何使用来自 ASHX 处理程序的 XML 数据响应填充 TreeView 控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/245418/

相关文章:

c# - 无法将类型 'ListName[]' 隐式转换为 'System.Collections.Generic.IList<ListName>'

asp.net - 如何运行 'dotnet dev-certs https --trust' ?

java - 默认处理程序上的存储错误

javascript - 在 javascript 或 c# 中从 Html 源查找重定向 URL

javascript - 通过 Javascript 在复选框更改时隐藏或显示中继器内的跨度

java - XML 解析 Java (Android)

java - eclipse 上的 Appcompat res values-v21 themes_base 错误不会消失

c# - 有没有办法在后台线程上建立 TreeView 控件?

c# - 在 TreeView 中添加子节点

c++ - 如何在 TreeView 中的父属性更改时更改子属性?