用递归快速加载树控件

 

     protected treeop tree = new treeop();
        SqlConnection cn = new SqlConnection();
        SqlCommand cmd;

  protected void Page_Load(object sender, System.EventArgs e)
  {
   // 在此处放置用户代码以初始化页面

            #region 如果不是初次加载就退出Page_Load
   if (IsPostBack)
   {
    return;
   }
   #endregion

            //调用方法,以userid作为条件
            this.ShowTree(Session["userid"].ToString());
           
            Add("0", (TreeNode)null);


        }

        #region 查找用户的可操作项
        public void ShowTree(string userid)
        {
            cn.ConnectionString = ConfigurationManager.ConnectionStrings["FixItemMgeConnectionString"].ConnectionString;
            cn.Open();
            cmd = new SqlCommand("menu_pro", cn);
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.Add("@userid", SqlDbType.Char, 10);
            cmd.Parameters[0].Value = userid;
            SqlDataAdapter da = new SqlDataAdapter();
            DataSet ds = new DataSet();
            da.SelectCommand = cmd;
            da.Fill(ds);
            cn.Close();
            //将DataSet存入会话变量,以便提高速度
            Session["ds"] = ds;
        }
        #endregion

        #region 用递归从数据库中动态加载树控件
        private void Add(string parent_id, TreeNode pNode)
        {
            //用存在会话变量中的DataSet作为条件
            DataView dv = new DataView(((DataSet)Session["ds"]).Tables[0]);
         
            //过滤parent_id,得到当前所有的子节点
            dv.RowFilter = "parent_id='" + parent_id + "'";
            foreach (DataRowView drv in dv)
            {
                TreeNode tnp = new TreeNode();
                if (pNode == null)
                {
                    tnp.Text = drv[2].ToString();

  //如果child_id != "900" ,则将页面加到Mainframe块中。否则关闭框架,弹出链接页面。
                    if (drv[1].ToString().Trim() != "900")
                    {
                        tnp.Target = "Mainframe";
                    }
                    else
                    {
                        tnp.Target = "_parent";                 
                    }
                    tnp.NavigateUrl = "~/" + drv[3].ToString();
                   
                    this.TreeView1.Nodes.Add(tnp);
                    //再次递归
                    Add(drv[1].ToString(), tnp);
                }
                else
                {
                    tnp.Text = drv[2].ToString();
                    //如果child_id != "900" ,则将页面加到Mainframe块中。否则关闭框架,弹出链接页面。
                    if (drv[1].ToString().Trim() != "900")
                    {
                        tnp.Target = "Mainframe";

                    }
                    else
                    {
                        tnp.Target = "_parent";
                       
                    }
                    tnp.NavigateUrl = "~/" + drv[3].ToString();
                    pNode.ChildNodes.Add(tnp);
                    //再次递归
                    Add(drv[1].ToString(), tnp);
                }

            }
        }
        #endregion

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值