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