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

4
我有一个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>
2个回答

2

我认为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

0
Dim oDataSet As New DataSet Public Sub PopulateTree(ByVal ParentId As String, ByVal TVNode As TreeNode) Dim oDataView As New DataView(oDataSet.Tables(0), "ParentID='" & ParentId & "'", "DATA", DataViewRowState.OriginalRows) Dim oDataRow As DataRowView For Each oDataRow In oDataView Dim oTreeNode As New TreeNode(oDataRow("DATA")) Dim oComboBox As New ComboBox If TVNode Is Nothing Then Else TVNode.Nodes.Add(oTreeNode) PopulateTree(oDataRow("ID"), oTreeNode) End If Next End Sub
这是如何调用上述函数的 PopulateTree(0, tvPost.TopNode) tvPost - 是TreeView T的名称
阅读更多请点击此链接 http://muruganad.com/ASP.NET/ASP_.NET_How_to_Populate_a_TreeView_Control_With_TreeNode_s_Using_recursive_algorithm_or_recursion_.html

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接