use stack to initial a treeview with the data in a database

来源:互联网 发布:yy网络主播赵哈哈 编辑:程序博客网 时间:2024/04/30 05:19

try
   {
    if(!Page.IsPostBack)
    {

     Stack s1 = new Stack();
     Stack s2 = new Stack();
     Stack s3 = new Stack();
     s1.Push("00");
     string temp = "";
     string strSql = "select rights.right_code from rights,user_right where rights.right_code=user_right.right_code and user_right.user_code='"+Session["UserCode"].ToString()+"' order by rights.right_code desc";
     mySQL.strConn="server=localhost;database=LIMS;uid=sa;pwd=sa;";
     DataView dv = (DataView)mySQL.ExecuteDataSource(strSql);
     for(int i=0;i<dv.Count;i++)
     {
     
      while(s1.Count>0)
      {
       temp = s1.Pop().ToString();
       if(temp != dv[i]["RIGHT_CODE"].ToString().Substring(0,temp.Length))
        break;
      }
      s1.Push(temp);
      for(int j=dv[i]["RIGHT_CODE"].ToString().Length/2;j>0;j--)
       s1.Push(dv[i]["RIGHT_CODE"].ToString().Substring(0,2*j));
     }
     while(s1.Count>0)
     {
      s2.Push(s1.Pop());
     }
     s2.Pop();
     //È¡Ê÷ÐÍÊý¾ÝÅÅÁÐs2

     strSql = "select right_code,right_name,page_code from rights order by right_code";
     dv.Dispose();
     dv = (DataView)mySQL.ExecuteDataSource(strSql);
     dv.Sort = "right_code";
     DataRowView drv;
     while(s2.Count>0)
     {
      temp = s2.Pop().ToString();
      Microsoft.Web.UI.WebControls.TreeNode cc = new Microsoft.Web.UI.WebControls.TreeNode();     
      drv = dv.FindRows(temp)[0];
      if(drv["Page_Code"].ToString()=="")
      {
       cc.Text = drv["right_name"].ToString();
       while(s3.Count>0)
       {
        temp = s1.Pop().ToString();
        if(temp.Length>drv["right_code"].ToString().Length)
         cc.Nodes.Add((Microsoft.Web.UI.WebControls.TreeNode)s3.Pop());
        else
        {
         s1.Push(temp);
         break;
        }
       }
      }
      else
      {
       cc.Text = drv["right_name"].ToString();

       cc.NavigateUrl = drv["page_code"].ToString().Substring(0,drv["page_code"].ToString().IndexOf(';'));

//as frame used, using following coding to set target of a hyperlink

//       if(cc.Text=="select checkout") //       {
//        cc.Target="_blank";
//       }
//       else
//       {
        cc.Target = "main";
//       }
      }
      s3.Push(cc);
      s1.Push(drv["right_code"].ToString());
     }
     while(s3.Count>0)
      this.TreeView1.Nodes.Add((Microsoft.Web.UI.WebControls.TreeNode)s3.Pop());
     s1.Clear();
    }
   }
   catch
   {return;}