4

我有一个返回 XML 响应 (FileStructureXML.ashx) 的 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>
4

2 回答 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
于 2008-10-29T03:11:43.447 回答
0
将 oDataSet 变暗为新数据集
    公共子 PopulateTree(ByVal ParentId 作为字符串,ByVal TVNode 作为 TreeNode)
        将 oDataView 调暗为新 DataView(oDataSet.Tables(0), "ParentID='" & ParentId & "'",
        "数据",DataViewRowState.OriginalRows)
        将 oDataRow 变暗为 DataRowView
        对于 oDataView 中的每个 oDataRow
            将 oTreeNode 调暗为新 TreeNode(oDataRow("DATA"))
            将 oComboBox 调暗为新的 ComboBox
            如果 TVNode 什么都不是,那么
            别的
                TVNode.Nodes.Add(oTreeNode)
                填充树(oDataRow(“ID”),oTreeNode)
            万一
        下一个
    结束子

这就是你调用上述函数的方式
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
于 2009-08-28T19:39:24.253 回答