最后10分,请求一个问题:
在asp.net 中如何制作树结构,并且如何将数据库绑定到树目录中!

解决方案 »

  1.   

    public class Trees:Page
    {
    protected string _TypeName;//目录树类别
    protected string _URL="";//后台处理程序
    protected string _Action="List";//程序处理动作
    protected string _Frame="Content";
    protected string _MouseOverBG="#AACCEE";//鼠标经过时的背景色
    protected string _MouseOutBG="";//鼠标离开时的背景色
    protected string _MouseOnClickBG="#88AACC";//鼠标单击时的背景色

    public string Frame
    {
    set
    {
    _Frame=value;
    }
    get
    {
    return _Frame;
    }
    }
    public string Action
    {
    set
    {
    _Action=value;
    }
    get
    {
    return _Action;
    }
    }
    public string Type
    {
    set
    {
    _TypeName=value;
    }
    get
    {
    return _TypeName;
    }
    }
    public string URL
    {
    set
    {
    _URL=value;
    }
    get
    {
    return _URL;
    }
    }
    public string MouseOverBG
    {
    set
    {
    _MouseOverBG=value;
    }
    get
    {
    return _MouseOverBG;
    }
    }
    public string MouseOutBG
    {
    set
    {
    _MouseOutBG=value;
    }
    get
    {
    return _MouseOutBG;
    }
    }
    public string MouseOnClickBG
    {
    set
    {
    _MouseOnClickBG=value;
    }
    get
    {
    return _MouseOnClickBG;
    }
    } protected override void CreateChildControls()
    {
    string _TreeString="";//目录结构字符串
    string _CurrentClass;//当前目录代码
    int _CurrentClassDiv;//当前目录所在级别
    string _LastClass="";//上级目录代码
    int _LastClassDiv=0;//上级目录所在级别 _TreeString+="<script language=\"javascript\">";

    _TreeString+="function js"+this.Type+"TreeShow(CurrentClass,TypeName){";
    //_TreeString+="alert(CurrentClass);";
    _TreeString+="str=document.all(TypeName+\"img\"+CurrentClass).src;";
    _TreeString+="str=str.substr(str.length-11);";
    //_TreeString+="alert(str);";
    _TreeString+="if(str==\"dot_end.gif\"){";
    //_TreeString+="alert(\"stop\");";
    _TreeString+="return false;";
    _TreeString+="}";
    _TreeString+="if(document.all(TypeName+\"c\"+CurrentClass).style.display==\"\"){";
    _TreeString+="document.all(TypeName+\"c\"+CurrentClass).style.display=\"none\";";
    _TreeString+="document.all(TypeName+\"img\"+CurrentClass).src=\"../Images/dot_close.gif\";";
    _TreeString+="}else{";
    _TreeString+="document.all(TypeName+\"c\"+CurrentClass).style.display=\"\";";
    _TreeString+="document.all(TypeName+\"img\"+CurrentClass).src=\"../Images/dot_open.gif\";";
    _TreeString+="}";
    _TreeString+="}";

    _TreeString+="function js"+this.Type+"MouseOver(Cell){";
    _TreeString+="if(Cell.id!=document.all(\""+this.Type+"ClickCell\").value){";
    _TreeString+="Cell.bgColor=\""+this.MouseOverBG+"\";";
    _TreeString+="}";
    _TreeString+="}";

    _TreeString+="function js"+this.Type+"MouseOut(Cell){";
    _TreeString+="if(Cell.id!=document.all(\""+this.Type+"ClickCell\").value){";
    _TreeString+="Cell.bgColor=\""+this.MouseOutBG+"\";";
    _TreeString+="}";
    _TreeString+="}"; _TreeString+="function js"+this.Type+"MouseOnClick(Cell,Class){";
    _TreeString+="if(document.all(\""+this.Type+"ClickCell\").value!=\"\"){";
    _TreeString+="document.all(document.all(\""+this.Type+"ClickCell\").value).bgColor=\""+this.MouseOutBG+"\";";
    _TreeString+="}";
    _TreeString+="Cell.bgColor=\""+this.MouseOnClickBG+"\";";
    _TreeString+="document.all(\""+this.Type+"ClickCell\").value=Cell.id;";
    if(this.Action=="List")
    {
    _TreeString+="parent."+this.Frame+".location.href=\""+this.URL+"?Class=\"+Class;";
    }
    _TreeString+="}"; _TreeString+="function js"+this.Type+"ClassShow(URL,ClassID){";
    _TreeString+="key=Math.ceil(Math.random()*10000000000000000);";
    //_TreeString+="alert(URL+\"&&\"+ClassID);";
    _TreeString+="document.all(\""+this.Type+"iFClass\").src=URL+\"?ClassID=\"+ClassID+\"&key=\"+key;";
    _TreeString+="}";
    _TreeString+="</script>"; _TreeString+="<input type=\"hidden\" name=\""+this.Type+"ClickCell\">";//记录上一次点击内容,在本次点击时将其外观等状态还原
    _TreeString+="<iframe width=\"0\" height=\"0\" id=\""+this.Type+"iFClass\"></iframe>";//以其获取数据,使页面只在局部刷新 _TreeString+="<table width=\"100%\" cellpadding=\"0\" cellspacing=\"0\">"; //结构树的处理
    string[] paras={"@ClassType"};
    string[] values={this.Type}; DB.Mapping dm=new DB.Mapping(); dm.HFEnable=false;
    dm.Paras=paras;
    dm.Values=values; SqlDataReader sdr=dm.sdrExecute("ClassTree");

    while(sdr.Read())
    {
    _CurrentClass=(string) sdr["Class"];
    _CurrentClassDiv=_CurrentClass.Length/4;

    if(_LastClassDiv>=_CurrentClassDiv)
    {
    _TreeString+="<tr><td><script language=\"javascript\">document.all(\""+this.Type+"img"+_LastClass+"\").src=\"../Images/dot_end.gif\";</script>";
    }
    for(int i=0;i<=(_LastClassDiv-_CurrentClassDiv);i++)
    {
    _TreeString+="</td></tr></table>";
    }
    if(_LastClassDiv>=_CurrentClassDiv)
    {
    _TreeString+="</td></tr>";
    } _TreeString+="<tr id=\""+this.Type+"f"+_CurrentClass+"\">";
    _TreeString+="<td height=\"20\" id=\""+this.Type+"TdCell"+_CurrentClass+"\" onclick=\"javascript:js"+this.Type+"MouseOnClick(this,'"+_CurrentClass+"');\"";
    if(this.Action=="Manage")
    {
    _TreeString+=" ondblclick=\"javascript:js"+this.Type+"ClassShow('"+this.URL+"','"+sdr["ClassID"]+"');\"";
    }
    _TreeString+=" onmouseover=\"javascript:js"+this.Type+"MouseOver(this);\" onmouseout=\"javascript:js"+this.Type+"MouseOut(this);\" style=\"cursor:hand;padding-left:"+(_CurrentClassDiv-1)*20+"px;\">";
    _TreeString+="<img id=\""+this.Type+"img"+_CurrentClass+"\"";
    if(_CurrentClassDiv==1)
    {
    _TreeString+=" src=\"../Images/dot_open.gif\"";
    }
    else
    {
    _TreeString+=" src=\"../Images/dot_close.gif\"";
    }
    _TreeString+=" onclick=\"javascript:js"+this.Type+"TreeShow('"+_CurrentClass+"','"+this.Type+"');\">";
    _TreeString+="&nbsp;";
    _TreeString+=sdr["ClassName"];
    _TreeString+="</td>";
    _TreeString+="</tr>";
    //本目录下的目录
    _TreeString+="<tr id=\""+this.Type+"c"+_CurrentClass+"\"";
    if(_CurrentClassDiv==1)
    {
    _TreeString+=" style=\"display:'';\">";
    }
    else
    {
    _TreeString+=" style=\"display:none;\">";
    }
    _TreeString+="<td>";
    _TreeString+="<table width=\"100%\" cellpadding=\"0\" cellspacing=\"0\">";

    _LastClass=_CurrentClass;
    _LastClassDiv=_CurrentClassDiv;
    }
    if(_LastClassDiv!=0)
    {
    _TreeString+="<tr><td><script language=\"javascript\">document.all(\""+this.Type+"img"+_LastClass+"\").src=\"../Images/dot_end.gif\";</script>";
    }
    for(int i=0;i<_LastClassDiv;i++)
    {
    _TreeString+="</td></tr></table>";
    }
    _TreeString+="</td></tr></table>"; this.Controls.Add(new LiteralControl(_TreeString));
    }
    }跟数据库内的结构有关系,比较复杂
      

  2.   

    楼上的方法是可以,但是比较复杂,如果对目录树的要求不高可以用MS提供的TreeView,如果要求比较高也可以继承TreeView自己写一个,关于从数据库绑定目录树就可以到网上搜索一下有很多文章可以参考
      

  3.   

    http://www.cnblogs.com/fecitsky/articles/35857.aspx给你个简单的吧