由于web的treeview的treenode没有winform的tag属性,我不知道怎么把自己的数据绑定在节点上,所以自己改了一下,可是最后吐血,没办法搞定,以下为我改写的代码
using System;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Microsoft.Web;
using Microsoft.Web.UI;
using Microsoft.Web.UI.WebControls;
using System.ComponentModel;namespace component
{
/// <summary>
/// UDNodes 的摘要说明。
/// </summary>
///
public class UNode:Microsoft.Web.UI.WebControls.TreeNode
{
private object ftag;
public object Tag
{
get
{
return ftag;
}
set
{
ftag=value;
}
}
} public class UNodes:Microsoft.Web.UI.WebControls.TreeNodeCollection
{ public void Add (UNode item)
{
base.Add(item);
}
public void AddAt ( System.Int32 index , UNode item )
{
base.AddAt(index,item);
}
public System.Boolean Contains ( UNode item )
{
return base.Contains(item);
}
public System.Int32 IndexOf (UNode item )
{
return base.IndexOf(item);
}
public void Remove (UNode item )
{
base.Remove(item);
}
public new UNode this[int index] 
{
get 
{
return ((UNode)(List[index]));
}
set 
{
List[index] = value;
}
}


}
[DefaultProperty("Nodes"), 
ToolboxData("<{0}:UTreeView runat=server></{0}:UTreeView>")]
public class UTreeView :Microsoft.Web.UI.WebControls.TreeView
{
private UNodes fnodes; public UTreeView()
{

fnodes=new UNodes();
}
[Bindable(true), 
Category("Appearance"), 
DefaultValue("")] 
public new UNodes Nodes
{
get
{
return fnodes;
}
set
{
fnodes=value;
}
}
protected override void Render(HtmlTextWriter output)
{

base.Render(output);
}
}
}

解决方案 »

  1.   

    网上有很多例子啦,也可以绑定xml文件啦
      

  2.   

    千万不要吐血!树:
    1.http://www.meizz.com/Web/Web.asp2.
    微软网站
    http://www.microsoft.com/china/msdn/archives/library/workshop/webcontrols/overview/treeview.asp3.
    引用:
    http://community.csdn.net/Expert/topic/4196/4196863.xml?temp=9.365261E-03
    http://community.csdn.net/Expert/topic/3169/3169028.xml?temp=.8414118
      

  3.   

    不知道是我对楼上的问题理解有错,还是怎么其它什么问题?
    WEB版的TreeView有个Value属性呀。或许可以参考下面的代码:
    public static void DatatableToTreeview(DataTable dt, TreeView tv, string colValue, string colText)
        {
            tv.Nodes[0].ChildNodes.Clear();
            foreach (DataRow dr in dt.Rows)
            {
                TreeNode tn = new TreeNode();
                tn.Value = dr[colValue].ToString();
                tn.Text = dr[colText].ToString();
                tv.Nodes[0].ChildNodes.Add(tn);
            }
            tv.Nodes[0].ChildNodes.Add(new TreeNode("New Record", "0"));
        }
      

  4.   

    TreeNode tmpNd = new TreeNode();
    tmpNd.Target = "_blank";
    tmpNd.NavigateUrl = "/default.aspx";
    tmpNd.Text = "<b>" + dr["Title"].ToString() + "</b>";TreeView2.Nodes.Add(tmpNd);
      

  5.   

    1.安装和引用控件。可以到微软网站上下载"IEWebControls.exe"安装程序,或在baidu或google上搜一下即可很容易找到这个安装程序。下载到本机后运行"IEWebControls.exe",默认安装在系统盘的Program Files文件夹下,在Program Files文件夹下找到IE Web Controls文件夹。2.递归调用实现using System;
    using System.Collections;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Web;
    using System.Web.SessionState;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.HtmlControls;
    using System.Data.OracleClient;
    using Microsoft.Web.UI.WebControls;
    //using XJSys.DataBase;
    namespace XJSys
    {
     /// <summary>
     /// Left 的摘要说明。
     /// </summary>
     public class Left : System.Web.UI.Page
     {
      protected Microsoft.Web.UI.WebControls.TreeView XJTV;
            //public DB DataConn=new DB(); 
      public OracleConnection Conn = new OracleConnection(ConnStr);
      //private void Page_Load(object sender, System.EventArgs e)
      //{
       //在此处放置用户代码以初始化页面
      //}
      DataSet ds=new DataSet();
      private void Page_Load(object sender, System.EventArgs e)
      {
       // 在此处放置用户代码以初始化页面
       if(!Page.IsPostBack)
       {
        //创建DataSet对象
        string Message="";
        OracleCommand CmdDS= new OracleCommand("select * from TModel where MKJB='2'",Conn);
        OracleDataAdapter adp = new OracleDataAdapter(CmdDS);
        adp.Fill(ds);
        if(ds.Tables[0].Rows.Count >0)
        {
         Message="1";
        }
        else
        {
         Message="0";
        }
        ds.Dispose();
        //创建DataReader对象
        OracleCommand Cmd=new OracleCommand("select * from XJ_TModel where MKJB='1'",Conn);
        Conn.Open();
        OracleDataReader OraDataReader=Cmd.ExecuteReader();
        while(OraDataReader.Read())
        {
         TreeNode tmpNr = new TreeNode();
         tmpNr.ID = OraDataReader["MKBH"].ToString();
         tmpNr.Text = OraDataReader["MKMC"].ToString();
         tmpNr.Target = "main";
         tmpNr.NavigateUrl = OraDataReader["MKLJ"].ToString();
         tmpNr.Expanded = true;
         XJTV.Nodes.Add(tmpNr);
         if (Message=="1")
         {
          InitTreeView(tmpNr);
         }
        }
        Conn.Close();
       }
      }  #region Web 窗体设计器生成的代码
      override protected void OnInit(EventArgs e)
      {
       //
       // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
       //
       InitializeComponent();
       base.OnInit(e);
      }
      
      /// <summary>
      /// 设计器支持所需的方法 - 不要使用代码编辑器修改
      /// 此方法的内容。
      /// </summary>
      private void InitializeComponent()
      {    
       this.XJTV.DataBinding += new System.EventHandler(this.XJTV_DataBinding);
       this.Load += new System.EventHandler(this.Page_Load);  }
      #endregion  public void InitTreeView(TreeNode tmpNr)
      {
       foreach(DataRow dr in ds.Tables[0].Rows)
       {
        if(dr["HIDEID"].ToString() == tmpNr.ID)
        {
         TreeNode tmpNd = new TreeNode();
         tmpNd.ID = dr["MKBH"].ToString();
         tmpNd.Text = dr["MKMC"].ToString();
         tmpNd.Target = "main";
         tmpNd.NavigateUrl = dr["MKLJ"].ToString();
         tmpNr.Nodes.Add(tmpNd);
         InitTreeView(tmpNd);
        }    
       }
      }
      private void XJTV_DataBinding(object sender, System.EventArgs e)
      {
      
      }
     }
    }
      

  6.   

    求学,能告诉我我写的错误在什么地方么,这个继承出来的东西
    根本就没有显示出Tree
    我自己的理解,TreeView在TreeNodeCollection的Add的时候UI上才绘制东西呢
    孟大虾给我讲讲好么
      

  7.   

    如果微软这个web treeview有源码就好了,直接就可以改TreeNode的属性了
      

  8.   

    哦,我用的asp.net 2.0,也就是VS2005,如果你是初学,并且没什么人强制你一定要用VS2003,建议你还是用VS2005吧,正式版都已经出来有段时间了。而且VS2005的功能比VS2003的功能强很多的,也方便很多的。号称代码量比VS2003要少70%呢,并且TreeView控件也是VS2005里的标准控件了。我上面的程序就是在asp.net 2.0里写的。