我在数据库中建了一个目录表tbDir,此表包含了三级目录,字段分别为:dID,dName,dParentID,请我如何把它绑定在dropdownlist里面,而且子目录和父目录之间不要对齐显示(同级目录之间当然是对齐),最好是缩进一个字符的位置,这样看起来才直观!我已整了一整天,实在没办法,所以才请教各位大侠?????

解决方案 »

  1.   

     /// <summary>
            /// 栏目
            /// </summary>
            public void BindToDDLSubject()
            {
                if (Session["_userid"] != null)
                {
                    DataSet ds = YQBiz.getMenu(Session["_userid"].ToString());                System.Web.UI.WebControls.ListItem item = new ListItem();
                    this.ddlSubject.Items.Clear();                for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
                    {
                        string strName = ds.Tables[0].Rows[i]["name"].ToString();
                        
                        if (strName == "工作通知")
                        {
                            //判断是否有发布工作通知的权限
                            if (Session["PubWork"] != null)
                            {
                                if (Session["PubWork"].ToString() == "false")
                                {
                                    continue;
                                }
                            }
                        }
                        string strId = ds.Tables[0].Rows[i]["id"].ToString();
                        string strIdPath = ds.Tables[0].Rows[i]["idpath"].ToString();
                        string strBlank = this.blank(strIdPath); //通过栏目idpath判断要空几个空格,1级栏目不空格,2级栏目空2格,以此类推
                        strName = strName.Insert(0, strBlank);                    item = new ListItem(strName, strId);
                        this.ddlSubject.Items.Add(item);
                     }
                    System.Web.UI.WebControls.ListItem item1 = new ListItem();
                    item1.Text = "--请选择--";
                    item1.Value = "-1";
                    this.ddlSubject.Items.Insert(0, item1);            }
                else
                {
                    Session.RemoveAll();
                    Response.Redirect("../../default.aspx");
                }        }
            //通过栏目idpath判断要空几个空格
            private string blank(string idpath)
            {
                string strTempBlank = "  ";
                string strBlank = string.Empty;            string[] strId = idpath.Split('.');            if (strId.Length == 3) //1级栏目没有空格
                {
                    return strBlank;
                }
                else
                {
                    for (int i = 3; i < strId.Length; i++) //2级以后的栏目递增
                    {
                        strBlank += strTempBlank;
                    }
                }
                return strBlank;
            }
    //哎 表设计不一样 估计也不行哦。
      

  2.   

    这样就OK。
    http://www.chenjiliang.com/Article/View.aspx?ArticleID=8324我想这个一定是你想要的效果
      

  3.   

    3楼的代码我看了,但是此代码中的Bll.Class类是如何写的,因为如果没有此代码,也是枉然啊?