PopulateOnDemand does not work on data bound ASP.Net TreeView

Posted by Shay Friedman on Stack Overflow See other posts from Stack Overflow or by Shay Friedman
Published on 2010-03-01T10:37:40Z Indexed on 2010/03/08 12:51 UTC
Read the original article Hit count: 599

Filed under:
|
|

Hi,

I have a TreeView that is bound to a XmlDataSource control. I've added some TreeNodeBinding elements to define how I want the XML data to be shown.

I have also added PopulateOnDemand=true to these TreeNodeBindings. However, doing so didn't change a thing and the entire XML tree is displayed. Moreover, the TreeNodePopulate event is not fired on node expand as well.

Important information: I'm using ASP.NET 4.

This is an example that reproduces the problem (very straight forward):

<%@ Page Language="C#" AutoEventWireup="true" %>

<script type="text/C#" runat="server">
  protected void TreeView1_TreeNodePopulate(Object sender, TreeNodeEventArgs e)
  {
    // This method is never called...
  }
</script>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
      <asp:TreeView ID="TreeView1" runat="server" DataSourceID="XmlDataSource1" OnTreeNodePopulate="TreeView1_TreeNodePopulate" ExpandDepth="0">
        <DataBindings>           
          <asp:TreeNodeBinding DataMember="#" TextField="#" ValueField="#" PopulateOnDemand="true" />          
        </DataBindings>       
      </asp:TreeView>
      <asp:XmlDataSource ID="XmlDataSource1" runat="server" DataFile="Sample.xml" />
    </div>
    </form>
</body>
</html>

The Sample.xml can be any xml file you want, it doesn't really matter.

I tried to put a breakpoint within the TreeView1_TreeNodePopulate method and it was never hit.

I also tried to:

  • Set a TreeNodeBinding for each possible data member with PopulateOnDemand="true".
  • Via code, go through all tree nodes and set their PopulateOnDemand property to true.

Nothing worked.

The only way the populate-on-demand thing worked was when I added nodes manually to the nodes instead of binding it to a data source.

What am I doing wrong?

© Stack Overflow or respective owner

Related posts about ASP.NET

Related posts about treeview