动态绑定树形菜单,并搜索节点展开

最近程序要求,用树形菜单显示信息,但是节点过多,很不方便查找,于是加了工-搜索节点,并展开树形菜单,默认选中
 说明:parentId需要搜索的节点ID
if(!Page.IsPostBack)
   {
    Agent ag=new Agent();
    
    DS=ag.FindChannelShowTree();
    
     ShowTree(ChannelsTreeView.Nodes,"100");
   }
private void ShowTree(Microsoft.Web.UI.WebControls.TreeNodeCollection Nds, string parentId)
  {
   
   DataView   dv=new   DataView()   ;  
   //DataRowView   drv;  
   TreeNode   tmpNd;  
   string   strId;  
   string kd=null;
   dv.Table   =   DS.Tables["Agent"];  
   dv.RowFilter   =   "ag_PARENTID='"   +   parentId   +   "'";     
    
//将搜索出来的夫节点放入数组,我是对节点分了等级的
System.Collections.ArrayList numlist=new ArrayList();
   string NodeID=null;
   Agent ag=new Agent();
   ag.FindNodeLvl(sid,out k);/返回k第几等级
   m=sid;
   for(int i=0;i<k+2;i++)
   {
    numlist.Add(m);
    bool b=ag.FindNode( m,out  NodeID);
    if(b)
    {
     m=NodeID;
    }
   
   }


   foreach(DataRowView   objRow   in   dv)  
   {  
     tmpNd=new   TreeNode();
    
     kd=(string)objRow["ag_AgentID"];
    strId=kd; 
    tmpNd.ID=strId.ToString();  
    tmpNd.Text=objRow["ag_AgentName"].ToString(); 
    tmpNd.NavigateUrl="ShowChannel.aspx?ChannelID=" + objRow["ag_AgentID"] + "";
    tmpNd.Target="mainframe2";
    for(int x=0;x<numlist.Count;x++)
    {
      if(kd==numlist[x].ToString())
       {
           tmpNd.Expanded=true;   //搜索的节点的所有父节点打开
       }
     
        if(kd==sid)
         {
          tmpNd.Checked=true;    //我想默认搜索到并展开,可是在vs.2003我没法实现,(此步失败)
      }
    }
        
    Nds.Add(tmpNd);  
    ShowTree(Nds[Nds.Count-1].Nodes,strId,sid);                                
   } 
  
  }

搜索默认选中还有待解决呵呵~~~~

posted on 2007-07-13 18:24  范燕军  阅读(844)  评论(0)    收藏  举报

导航