谁有treeview的实例,结点是从sql server 中读出的?

解决方案 »

  1.   

    表结构如
    id nodename parentid
    1   a        0
    2   a_1      1
    private void Page_Load(object sender, System.EventArgs e)
    {
    CreateTreeDataSet();
    InitTree(tvMenu.Nodes,"0");
    }

    //树形目录
    private DataSet CreateTreeDataSet()
    {
    string cmdSelect="select * from categories";
    myCmd=new SqlDataAdapter(cmdSelect,publicDB.strConn);
    treeds=new DataSet();
    myCmd.Fill(treeds,"tree");
    return treeds;
    }
    //生成树
    private void InitTree(TreeNodeCollection Nds,string parentId)
    {
    DataView dv=new DataView();
    TreeNode tmpNd;
    string intId;
    dv.Table=treeds.Tables["tree"];
    dv.RowFilter="ParentId="+parentId+"";
    foreach(DataRowView drv in dv)
    {
    tmpNd=new TreeNode();
    tmpNd.ID=drv["NodeId"].ToString();
    tmpNd.Text=drv["NodeName"].ToString();
    //tmpNd.ImageUrl="images/"+drv["Icon"].ToString();
    tmpNd.Target="right";
    tmpNd.NavigateUrl=drv["Address"].ToString()+drv.Row["NodeID"].ToString();
    Nds.Add(tmpNd);
    intId=drv["ParentId"].ToString();
    InitTree(tmpNd.Nodes,tmpNd.ID);
    }
    }
      

  2.   

    这个是我用的方法:
    private void Page_Load(object sender, System.EventArgs e)
    {
    Microsoft.Web.UI.WebControls.TreeNode rootnode = new Microsoft.Web.UI.WebControls.TreeNode();
    rootnode.Expanded = true;
    TreeView1.Nodes.Add(rootnode);
    CreateTree(0, rootnode);
    }private void CreateTree(int belong, Microsoft.Web.UI.WebControls.TreeNode rootnode)
    {
    SqlConnection connection = new SqlConnection("server=localhost;uid=sa;pwd=;database=Sutra");
    string strSql="select * from test where belong="+@belong+"and Visible=1";
    SqlCommand cmd=new SqlCommand(strSql,connection);
    cmd.CommandTimeout = 30;
    SqlDataAdapter custDA = new SqlDataAdapter();
    custDA.SelectCommand = cmd;
    connection.Open();
    DataSet ds = new DataSet();
    custDA.Fill(ds,"test");
    foreach(DataRow dr in ds.Tables[0].Rows)
    {
    Microsoft.Web.UI.WebControls.TreeNode treenode = new Microsoft.Web.UI.WebControls.TreeNode();
    treenode.Text = dr["text"].ToString().Trim();
    treenode.CheckBox = true;
    treenode.Expanded = true;
    rootnode.Nodes.Add(treenode);
    int id = int.Parse(dr["id"].ToString().Trim()); CreateTree(id, treenode);
    }
    ds.Clear();
    connection.Close();
    }
      

  3.   

    Populating the TreeView Control from a Databasehttp://www.15seconds.com/issue/030827.htm
    Populate a TreeView from a SELF-JOINED table
    http://www.codeproject.com/cs/database/2dtreeview.asp
      

  4.   

    ID,Name,ParentID.
    其中Parent表示父亲节点,如果是0,则表示跟节点.如果某个记录的Parent等于另一个记录的ID则表示这个记录是另一个记录的子节点,要将他们按照父子节点关系填充到treeview控件.我的代码是这样的:
    Public Sub intiTree(ByRef Nds As TreeNodeCollection, ByVal ID As Integer)
            Dim dv As New DataView
            Dim drv As DataRowView
            Dim tmpNd As TreeNode
            Dim intId As Integer
            dv.Table = ds.Tables("tree")
            dv.RowFilter = "ParentID='" & ID & "'"
            For Each drv In dv
                tmpNd = New TreeNode
                tmpNd.ID = CStr(drv("DpNo"))
                tmpNd.Text = CStr(drv("Name"))
                Nds.Add(tmpNd)
                intId = CInt(tmpNd.ID)
                intiTree(Nds(Nds.Count - 1).Nodes, intId)
            Next
      End Sub
     Public Sub CreateDataSet(ByVal ds As DataSet) '建立门位置数据集 
            If conn.State = ConnectionState.Closed Then conn.Open()
            Dim myDataAdapter As New SqlDataAdapter("select * from MJCfgDoorPos", conn)
            myDataAdapter.Fill(ds, "tree")
            myDataAdapter.Dispose()
            conn.Close()
        End Sub
    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            If Not Page.IsPostBack Then
                CreateDataSet(ds)
                intiTree(tvDoorPos.Nodes, 0)
            End If
     End Sub
     这种递归方法虽然有速度问题,但是有时候很有用。很适合处理这样的问题。
    很多人有着的例子,都缺句,我这个是经过调试源码,一定可以的