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

时间:2008-10-29 00:44:51

标签: asp.net xml treeview xmldatasource

我有一个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 个答案:

答案 0 :(得分: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

答案 1 :(得分: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

This is how U call the above function 
PopulateTree(0, tvPost.TopNode)
tvPost - its the name of TreeView T

To Read More Click this link
http://muruganad.com/ASP.NET/ASP_.NET_How_to_Populate_a_TreeView_Control_With_TreeNode_s_Using_recursive_algorithm_or_recursion_.html