我用一个listbox来绑定部门数控
想得到这么一个效果:第一级部门显示的是"|-"+部门名称,第二级显示的是"|---"+部门名称
依次内推
但我只做到了每级只显示部门名称的效果,前面的级别字符没有实现
下面是我的代码
 private void aaaa(int dutyID)
    {        DataTable dt = new DataTable();
        dt.Columns.Add("DutyID");
        dt.Columns.Add("DutyName");
        dt.Columns.Add("Description");
        dt.Columns.Add("ParentID");        dt.Rows.Add("1", "XX集团", "集团", "0");
        dt.Rows.Add("2", "北京XX软件有限公司", "北京分公司", "1");
        dt.Rows.Add("3", "大连XX软件有限公司", "大连分公司", "1");
        dt.Rows.Add("4", "美国XX软件有限公司", "美国分公司", "1");
        dt.Rows.Add("5", "日本XX软件有限公司", "日本分公司", "1");
        dt.Rows.Add("6", "研发部", "研发", "2");
        dt.Rows.Add("7", "数字媒体部", "数媒", "2");        foreach (DataRow dr in dt.Rows)
        {
            if (dutyID.ToString() == dr["ParentID"].ToString())
            {
                dlDepart.Items.Add(new ListItem(dr["DutyName"].ToString(), dr["DutyID"].ToString()));
                int parentID = Convert.ToInt32(dr["DutyID"].ToString());
                aaaa(parentID, dt);            }
        }
    }    private void aaaa(int dutyID, DataTable dt)
    {
        foreach (DataRow dr in dt.Rows)
        {
            if (dutyID.ToString() == dr["ParentID"].ToString())
            {
                dlDepart.Items.Add(new ListItem(dr["DutyName"].ToString(), dr["DutyID"].ToString()));
                int parentID = Convert.ToInt32(dr["DutyID"].ToString());
                aaaa(parentID, dt);
            }
        }
    }请高手帮助一下
谢谢

解决方案 »

  1.   

    private void aaaa(int dutyID) 
        {         DataTable dt = new DataTable(); 
            dt.Columns.Add("DutyID"); 
            dt.Columns.Add("DutyName"); 
            dt.Columns.Add("Description"); 
            dt.Columns.Add("ParentID"); 
            dt.Columns.Add("Depth",typeof(int));         dt.Rows.Add("1", "XX集团", "集团", "0",0); 
            dt.Rows.Add("2", "北京XX软件有限公司", "北京分公司", "1",1); 
            dt.Rows.Add("3", "大连XX软件有限公司", "大连分公司", "1",1); 
            dt.Rows.Add("4", "美国XX软件有限公司", "美国分公司", "1",1); 
            dt.Rows.Add("5", "日本XX软件有限公司", "日本分公司", "1",1); 
            dt.Rows.Add("6", "研发部", "研发", "2",2); 
            dt.Rows.Add("7", "数字媒体部", "数媒", "2",2);         foreach (DataRow dr in dt.Rows) 
            { 
                if (dutyID.ToString() == dr["ParentID"].ToString()) 
                { 
                    int n = Convert.ToInt32(dr["Depth"]);
                    string sName = "|".PadRight(n,'-') + dr["DutyName"].ToString();

                    dlDepart.Items.Add(new ListItem(sName, dr["DutyID"].ToString())); 
                    int parentID = Convert.ToInt32(dr["DutyID"].ToString()); 
                    aaaa(parentID, dt);             } 
            } 
        }     private void aaaa(int dutyID, DataTable dt) 
        { 
            foreach (DataRow dr in dt.Rows) 
            { 
                if (dutyID.ToString() == dr["ParentID"].ToString()) 
                { 
                    int n = Convert.ToInt32(dr["Depth"]);
                    string sName = "|".PadRight(n,'-') + dr["DutyName"].ToString();

                    dlDepart.Items.Add(new ListItem(sName, dr["DutyID"].ToString())); 
                    int parentID = Convert.ToInt32(dr["DutyID"].ToString()); 
                    aaaa(parentID, dt); 
                } 
            } 
        } 
      

  2.   


    郁闷的是不能编辑自己发的帖子,再发一遍:
    private void aaaa(int dutyID) 
        {         DataTable dt = new DataTable(); 
            dt.Columns.Add("DutyID"); 
            dt.Columns.Add("DutyName"); 
            dt.Columns.Add("Description"); 
            dt.Columns.Add("ParentID"); 
            dt.Columns.Add("Depth",typeof(int));         dt.Rows.Add("1", "XX集团", "集团", "0",0); 
            dt.Rows.Add("2", "北京XX软件有限公司", "北京分公司", "1",1); 
            dt.Rows.Add("3", "大连XX软件有限公司", "大连分公司", "1",1); 
            dt.Rows.Add("4", "美国XX软件有限公司", "美国分公司", "1",1); 
            dt.Rows.Add("5", "日本XX软件有限公司", "日本分公司", "1",1); 
            dt.Rows.Add("6", "研发部", "研发", "2",2); 
            dt.Rows.Add("7", "数字媒体部", "数媒", "2",2);         foreach (DataRow dr in dt.Rows) 
            { 
                if (dutyID.ToString() == dr["ParentID"].ToString()) 
                { 
                    int n = Convert.ToInt32(dr["Depth"]);
                    string sName = "|".PadRight(n,'-') + dr["DutyName"].ToString();

                    dlDepart.Items.Add(new ListItem(sName, dr["DutyID"].ToString())); 
                    int parentID = Convert.ToInt32(dr["DutyID"].ToString()); 
                    aaaa(parentID, dt);             } 
            } 
        }     private void aaaa(int dutyID, DataTable dt) 
        { 
            foreach (DataRow dr in dt.Rows) 
            { 
                if (dutyID.ToString() == dr["ParentID"].ToString()) 
                { 
                    int n = Convert.ToInt32(dr["Depth"]);
                    string sName = "|".PadRight(n,'-') + dr["DutyName"].ToString();

                    dlDepart.Items.Add(new ListItem(sName, dr["DutyID"].ToString())); 
                    int parentID = Convert.ToInt32(dr["DutyID"].ToString()); 
                    aaaa(parentID, dt); 
                } 
            } 
        }