我知道的是在数据访问层写好SQL语句,然后到业务逻辑层写出树,再到界面层调用

解决方案 »

  1.   

    在逻辑层调用数据层和类查询出数据,在WEB层绑定到treeview.到51aspx.com上看看
      

  2.   

    绘制树应该是在UI层来做 在BLL也可以 但如果要考虑UI形式可能由web换到winform或者由winform换到WPF 就不合适了
      

  3.   

    贴下我的树
    private void Page_Load(object sender, System.EventArgs e)
    {
    // 在此处放置用户代码以初始化页面
    if(!IsPostBack)
    {
    this.trvKinds.Nodes.Add(readTableToTree());
    trvKinds.ExpandLevel=1;
    }
    }
    private TreeNode readTableToTree()
    {
    using(AddressAccess da = new AddressAccess())
    {
    string mAddressID = "32000000000";
    string mAddressName = "某城市";
    string mAddressType = "22";
    TreeNode rootNode=new  TreeNode();
    DataSet ds = da.LoadAddress();
    DataTable dt = ds.Tables[0];
    DataRow[] rows = dt.Select("chrtype='21' or chrtype='22' or chrtype='23'");
    if (rows.GetLength(0) != 0)
    {
    mAddressName = rows[0]["chraddressname"].ToString().Trim();
    mAddressType = rows[0]["chrtype"].ToString().Trim();
    }
    rootNode.Text = mAddressName;
    rootNode.Target = "SlaveFrame";
    rootNode.NavigateUrl = "../Basic/tblAddressList.aspx?AddressID="+mAddressID+"&AddressName=" + mAddressName;
    this.creatTree(ref rootNode,mAddressType,ref dt,"");
    return rootNode;
    }
    }

    //创建树
    private void creatTree(ref TreeNode root,string mType,ref DataTable dt,string id)
    {
    DataRow[] rows = null;
    switch (mType)
    {
    case "21":
    case "22":
    case "23":
    rows=dt.Select("substring(chraddressid,9,4) ='0000' and (chrtype='31' or chrtype='32' or chrtype='33')","chraddressid");
    break;
    case "31":
    case "32":
    case "33":
    rows=dt.Select("substring(chraddressid,11,2) ='00' and substring(chraddressid,1,8) = '" + id.Substring(0,8).ToString() + "' and (chrtype='41' or chrtype='42')","chraddressid");
    break;
    case "41":
    case "42":
    // rows=dt.Select("substring(chraddressid,1,10) = '" + id.Substring(0,10).ToString() + "' and (chrtype='51')","chraddressid");
    break;
    case "51":
    return;
    }
    if (mType != "41" && mType != "42")
    {
    foreach(DataRow row in rows)
    {
    TreeNode rootNode = new TreeNode();
    rootNode.Text = row["chraddressname"].ToString().Trim();
    rootNode.Target = "SlaveFrame";
    rootNode.NavigateUrl = "../Basic/tblAddressList.aspx?AddressID="+row[tblAddressData.CHRADDRESSID_FIELD].ToString().Trim()+"&AddressName=" + row[tblAddressData.CHRADDRESSNAME_FIELD].ToString().Trim() ;
    root.Nodes.Add(rootNode);
    this.creatTree(ref rootNode,row["chrtype"].ToString(),ref dt,row["chraddressid"].ToString().Trim());
    }
    }
    }
      

  4.   

    三层结构首先你要搞清楚划分层的作用,各层需实现的功能是什么,理解了分层的作用之后一切就明白了。OVER。