林子之大.net笔记

本站多数文章由其它网址转载,没啥技术含量的皆为原创。主要目的是对付记性不好,方便查询。

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
 以作参考
protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            BindTreeView();
            treeStaff.ExpandAll();
        }
    }

protected override void OnLoadComplete(EventArgs e)
    {
        base.OnLoadComplete(e);
        //DataTable dt = (grdList.DataSource as DataSet).Tables[0];
        string corpCode = Globals.GetCurrentUserCorpCode();
        for (int i = 0; i < grdList.Items.Count; i++)
        {
            DataSet ds = new IDE_DepartmentController().GetIDE_DepartmentByCorpCode(corpCode);
            TreeViewNode treeNode = GetNodeByName(treeStaff.Nodes[0], ds.Tables[0].Rows[0].ItemArray[5].ToString());
            TreeViewNode treeUser = new TreeViewNode();
            treeUser.Text = grdList.Items[i].Cells[1].Text;
            treeUser.Value = ds.Tables[0].Rows[0].ItemArray[5].ToString();
            treeUser.ImageUrl = "user8.gif";
            treeNode.Nodes.Add(treeUser);
        }

    }

    private void BindTreeView()
    {
        DataSet dsSource = new IDE_DepartmentController().GetIDE_DepartmentByCorpCode(Globals.GetCurrentUserCorpCode());
        DataRelation relation = new DataRelation("ParentCode", dsSource.Tables[0].Columns["DepartmentCode"], dsSource.Tables[0].Columns["ParentCode"], false);

        dsSource.Relations.Add(relation);
        DataRow[] drsRoot = dsSource.Tables[0].Select("ParentCode=''");
        IDE_CorpInfoInfo corpInfo = new IDE_CorpInfoController().GetIDE_CorpInfoByCorpCode(Globals.GetCurrentUserCorpCode());
        if (corpInfo == null)
            return;
        TreeViewNode rootNode = new TreeViewNode();
        rootNode.Text = corpInfo.CorpName;
        rootNode.Value = "";
        rootNode.Expanded = true;

        foreach (DataRow dr in drsRoot)
        {
            TreeViewNode node = new TreeViewNode();
            node.Text = dr["DepartmentName"].ToString();
            node.Value = dr["DepartmentCode"].ToString();
            BuildChildNode(dr, node);// lh 2007-5-24子节点下面的根节点无法显示 注释该句就ok了
            rootNode.Nodes.Add(node);
        }
        this.treeStaff.Nodes.Add(rootNode);

        //TreeView2.DataSource = dsSource; TreeView2.DataBind();
    }
    private void BuildChildNode(DataRow parentRow, ComponentArt.Web.UI.TreeViewNode parentNode)
    {
        DataRow[] drSub = parentRow.GetChildRows("ParentCode");
        foreach (DataRow drChild in drSub)
        {
            TreeViewNode node = new TreeViewNode();
            node.Text = drChild["DepartmentName"].ToString();
            node.Value = drChild["DepartmentCode"].ToString();
            //
            parentNode.Nodes.Add(node);
            BuildChildNode(drChild, node);
        }
    }
    /// <summary>
    /// 查询父节点下匹配部门名称的子节点
    /// </summary>
    /// <param name="tvNode">父节点</param>
    /// <param name="DepartmentCode">要查找的部门code</param>
    /// <returns></returns>
    protected TreeViewNode GetNodeByName(TreeViewNode tvNode, string DepartmentCode)
    {
        if (tvNode == null)
        {
            return null;
        }
        if (tvNode.Value == DepartmentCode)
        {
            return tvNode;
        }
        if (tvNode.Nodes.Count == 0)
        {
            return null;
        }
        for (int i = 0; i < tvNode.Nodes.Count; i++)
        {
            TreeViewNode tvN = tvNode.Nodes[i];
            if (tvN.Value == DepartmentCode)
            {
                return tvN;
            }
            if (tvN.Nodes.Count == 0)
            {
                continue;
            }
            TreeViewNode tvChild = GetNodeByName(tvN, DepartmentCode);
            if (tvChild != null)
            {
                return tvChild;
            }
        }
        return null;
    }

posted on 2007-10-25 16:04  林614  阅读(439)  评论(0)    收藏  举报