在 一个动态 Treeview 中 使用了PopulateOnDemand = true;  那么这个时候 OnSelectedNodeChanged 事件激发不了,请问如何解决???前台:
 <asp:TreeView ID="TreeView1" runat="server" 
            ontreenodepopulate="TreeView1_TreeNodePopulate"    OnSelectedNodeChanged="TreeView1_SelectedNodeChanged" EnableClientScript="true" ExpandDepth="4"  CssClass="DefaultStyle"   > 
             <HoverNodeStyle CssClass="HoverStyle" />
            <SelectedNodeStyle CssClass="SelectedStyle" />
            <Nodes> 
                <asp:TreeNode PopulateOnDemand="True" Text="产品列表" Value="产品列表"></asp:TreeNode> 
            </Nodes>   </asp:TreeView>
后台:
protected void TreeView1_TreeNodePopulate(object sender, TreeNodeEventArgs e)
    {        this.TreeView1.ShowLines = true;//在控件中显示网格线    //    TreeNode rootNode = new TreeNode();//定义根节点
     //   rootNode.Text = "产品列表";
        
        
        if (e.Node.ChildNodes.Count == 0)
        {
            switch (e.Node.Depth)
            {
                case 0:
                    PopulateTypes(e.Node);
                    break;
                case 1:
                    PopulateBrands(e.Node);
                    break;
                case 2:
                    PopulateNames(e.Node);
                    break;                case 3:
                    PopulateSpecifications(e.Node);
                    break;
           
            
            }        }
    }    void PopulateTypes(TreeNode node)
    {        ZSql type = new ZSql();        type.Open("select ComoditiesType,TypeId from ComoditiesType");
        if (type.m_table.Rows.Count > 0)
        {
            foreach (DataRow row in type.m_table.Rows)
            {
                TreeNode NewNode = new TreeNode(row["ComoditiesType"].ToString(), row["TypeId"].ToString());
                NewNode.PopulateOnDemand = true;
                NewNode.SelectAction = TreeNodeSelectAction.Expand;
                node.ChildNodes.Add(NewNode);
            }        }
        type.Close();
    }
    void PopulateBrands(TreeNode node)
    {        ZSql brand = new ZSql();
        string Typeid = "";
        Typeid = node.Value;
        brand.Open("select Brand,BrandId,TypeId from Brand where Typeid='"+Typeid+"'");
       
       if (brand.m_table.Rows.Count > 0)
        {
         foreach (DataRow row in brand.m_table.Rows)
            {
                TreeNode NewNode = new TreeNode(row["Brand"].ToString(), row["BrandId"].ToString());
                NewNode.PopulateOnDemand = true;
                NewNode.SelectAction = TreeNodeSelectAction.Expand;
                node.ChildNodes.Add(NewNode);
            }        }
        brand.Close();
        
      }    void PopulateNames(TreeNode node)
    {        ZSql name = new ZSql();
        string Brandid = "";
        Brandid = node.Value;
        name.Open("select ComoditiesName,ComoditiesNameId,BrandId from ComoditiesName where Brandid='" + Brandid + "'");        if (name.m_table.Rows.Count > 0)
        {
            foreach (DataRow row in name.m_table.Rows)
            {
                TreeNode NewNode = new TreeNode(row["ComoditiesName"].ToString(), row["ComoditiesNameId"].ToString());
                NewNode.PopulateOnDemand = true;
                NewNode.SelectAction = TreeNodeSelectAction.Expand;
                node.ChildNodes.Add(NewNode);
            }        }
        name.Close();    }    void PopulateSpecifications(TreeNode node)
    {        ZSql speci = new ZSql();
        string Nameid = "";
        Nameid = node.Value;
        speci.Open("select Specifications,SpecificationsId,ComoditiesNameId from Specifications where comoditiesNameid='" + Nameid + "'");        if (speci.m_table.Rows.Count > 0)
        {
            foreach (DataRow row in speci.m_table.Rows)
            {
                TreeNode NewNode = new TreeNode(row["Specifications"].ToString(), row["SpecificationsId"].ToString());
                NewNode.PopulateOnDemand = true;
                NewNode.SelectAction = TreeNodeSelectAction.Expand;
                node.ChildNodes.Add(NewNode);
            }        }
        speci.Close();    }
    protected void TreeView1_SelectedNodeChanged(object sender, EventArgs e)
    {
        
         ZSql zs = new ZSql();
        Hidden1.Value = TreeView1.SelectedValue;
        if (TreeView1.SelectedNode.Parent != null)
            Hidden2.Value = TreeView1.SelectedNode.Parent.Value;
        else
            Hidden2.Value = "0";
       
     // zs.Open("select menu,url,pname=(select menu from menu a where a.menuid=menu.parentid) from menu where menuid = " + Hidden1.Value);
       // zs.NextRow();        TextBox1.Text = TreeView1.SelectedValue;// zs["menu"].ToString();
      //  txturl.Text = zs["url"].ToString();
     //   lblPname.Text = zs["pname"].ToString();
    }