曾经爱晚人








永远自由的心

利用.net 2.0中的TreeView控件与数据库绑定,生成无限级的树目录

数据表的结构

www.lemongtree.com 
    
using System; 
using System.Data; 
using System.Configuration; 
using System.Web; 
using System.Web.Security; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using System.Web.UI.WebControls.WebParts; 
using System.Web.UI.HtmlControls; 
using System.Data.SqlClient; 
public partial class _Default : System.Web.UI.Page 

    
protected string _connstr = ConfigurationManager.ConnectionStrings["DemoConnectionstrings"].ConnectionString; 
    
protected void Page_Load(object sender, EventArgs e) 
    

        
if (!Page.IsPostBack) 
        

            BindTree(); 
            
using (SqlConnection _conn = new SqlConnection(_connstr)) 
            

                SqlCommand _comm 
= new SqlCommand("select * from treeview", _conn); 

                _conn.Open(); 
                
using (SqlDataReader r = _comm.ExecuteReader()) 
                

                    
while (r.Read()) 
                    

                        ListItem item 
= new ListItem(r["txt"].ToString(), r["id"].ToString()); 
                        
this._dd_parent.Items.Add(item); 
                    }
 
                }
 
            }
 
            
this._dd_parent.Items.Insert(0new ListItem(".""0")); 
        }
 
    }
 
    
protected void BindTree() 
    

        TreeNode node 
= new TreeNode();   //这里是创建一个根节点,就是dome中看到的Root 
        node.Text = "Root"
        CreateChildTree(node, 
0);    
        _tree_view.Nodes.Add(node); 
    }
 

    
protected void CreateChildTree(TreeNode _parentNode, int _parentID) 
    

        
using (SqlConnection _conn = new SqlConnection(_connstr)) 
        

            SqlCommand _comm 
= new SqlCommand(); 
            
string sql = "select * from treeview where rootid=@rootid"
            _comm.Parameters.Add(
"@rootid", SqlDbType.Int).Value = _parentID; 
            _comm.CommandText 
= sql; 
            _comm.Connection 
= _conn; 
            _conn.Open(); 
            
using (SqlDataReader r = _comm.ExecuteReader()) 
            

                
while (r.Read()) 
                

                    TreeNode _node 
= new TreeNode(r["txt"].ToString()); 
                        CreateChildTree(_node, (
int)r["ID"]);  //递归出子节点 
                        _parentNode.ChildNodes.Add(_node); 
                }
 
            }
 
        }
 
    }
 
    
protected void _btn_submit_Click(object sender, EventArgs e) 
    

        
int _rootid = Convert.ToInt16(this._dd_parent.SelectedValue); 
        
string _txt = this._txt_txt.Text.Trim(); 
        
using (SqlConnection _conn = new SqlConnection(_connstr)) 
        

            SqlCommand _comm 
= new SqlCommand("insert into treeview (txt,rootid) values (@txt,@id)", _conn); 
            _comm.Parameters.Add(
"@txt", SqlDbType.VarChar, 50).Value = _txt; 
            _comm.Parameters.Add(
"@id", SqlDbType.Int).Value = _rootid; 
            _conn.Open(); 
            _comm.ExecuteNonQuery(); 
        }
 
        
this._tree_view.Nodes.Clear(); 
        BindTree(); 
    }
 
}
 

posted on 2006-07-13 16:08  e旋风  阅读(6405)  评论(4编辑  收藏  举报

导航