2010-11-23 57 views
3

我已经在Treeview中创建了动态TreeView,我必须添加URL的,可以给任何一个例子........如何在ASP.NET中动态创建的树状视图中添加URL?

请即时在新的asp.net ........ 。

如下代码......

using System; 
using System.Data; 
using System.Configuration; 
using System.Collections; 
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 TreeViewCS : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     if (!Page.IsPostBack) 
      PopulateRootLevel(); 
    } 

    private void PopulateRootLevel() 
    { 
     SqlConnection objConn = new SqlConnection(@"server=AG-SERVER;Initial Catalog=abc;User ID=ab-cdef;Password=1234"); 
     SqlCommand objCommand=new SqlCommand(@"select id,title,(select count(*) FROM SampleCategories WHERE parentid=sc.id) childnodecount FROM SampleCategories sc where parentID IS NULL",objConn); 
     SqlDataAdapter da=new SqlDataAdapter(objCommand); 
     DataTable dt=new DataTable(); 
     da.Fill(dt); 
     PopulateNodes(dt,TreeView1.Nodes); 
    } 

    private void PopulateSubLevel(int parentid,TreeNode parentNode) 
    { 
     SqlConnection objConn = new SqlConnection(@"server=AG-SERVER;Initial Catalog=abc;User ID=ab-cdef;Password=1234"); 
     SqlCommand objCommand=new SqlCommand(@"select id,title,(select count(*) FROM SampleCategories WHERE parentid=sc.id) childnodecount FROM SampleCategories sc where [email protected]",objConn); 
     objCommand.Parameters.Add("@parentID", SqlDbType.Int).Value = parentid; 
     SqlDataAdapter da=new SqlDataAdapter(objCommand); 
     DataTable dt=new DataTable(); 
     da.Fill(dt); 
     PopulateNodes(dt,parentNode.ChildNodes); 
    } 


    protected void TreeView1_TreeNodePopulate(object sender,TreeNodeEventArgs e) 
    { 
     PopulateSubLevel(Int32.Parse(e.Node.Value),e.Node); 
    } 

    private void PopulateNodes(DataTable dt,TreeNodeCollection nodes) 
    { 
      foreach(DataRow dr in dt.Rows) 
      { 
       TreeNode tn=new TreeNode(); 
       tn.Text = dr["title"].ToString(); 
       tn.Value = dr["id"].ToString(); 
       nodes.Add(tn); 

       //If node has child nodes, then enable on-demand populating 
       tn.PopulateOnDemand = ((int)(dr["childnodecount"]) > 0); 
      } 
    } 

} 
+0

你可以发布你已有的代码,所以我们可以从那里开始? – 2010-11-23 10:27:46

回答

4

假设包含该网址的数据库列被命名为url,首先需要从数据库中获取它们:

private void PopulateRootLevel() 
{ 
    SqlConnection objConn = new SqlConnection(@"server=AG-SERVER;Initial Catalog=abc;User ID=ab-cdef;Password=1234"); 
    SqlCommand objCommand=new SqlCommand(@"select id,title,url,(select count(*) FROM SampleCategories WHERE parentid=sc.id) childnodecount FROM SampleCategories sc where parentID IS NULL",objConn); 
    SqlDataAdapter da=new SqlDataAdapter(objCommand); 
    DataTable dt=new DataTable(); 
    da.Fill(dt); 
    PopulateNodes(dt,TreeView1.Nodes); 
} 

private void PopulateSubLevel(int parentid,TreeNode parentNode) 
{ 
    SqlConnection objConn = new SqlConnection(@"server=AG-SERVER;Initial Catalog=abc;User ID=ab-cdef;Password=1234"); 
    SqlCommand objCommand=new SqlCommand(@"select id,title,url,(select count(*) FROM SampleCategories WHERE parentid=sc.id) childnodecount FROM SampleCategories sc where [email protected]",objConn); 
    objCommand.Parameters.Add("@parentID", SqlDbType.Int).Value = parentid; 
    SqlDataAdapter da=new SqlDataAdapter(objCommand); 
    DataTable dt=new DataTable(); 
    da.Fill(dt); 
    PopulateNodes(dt,parentNode.ChildNodes); 
} 

然后将它们分配给树节点的NavigateUrl属性:

private void PopulateNodes(DataTable dt,TreeNodeCollection nodes) 
{ 
     foreach(DataRow dr in dt.Rows) 
     { 
      TreeNode tn=new TreeNode(); 
      tn.Text = dr["title"].ToString(); 
      tn.Value = dr["id"].ToString(); 
      tn.NavigateUrl = dr["url"].ToString(); 
      nodes.Add(tn); 

      //If node has child nodes, then enable on-demand populating 
      tn.PopulateOnDemand = ((int)(dr["childnodecount"]) > 0); 
     } 
}