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

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

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

如果我将XMLDataSource指向服务器上的静态XML文件,则树视图将按预期填充.但是,如果我将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
点赞