2010-11-23 2 views
3

Я создал Динамическое Treeview в этом Treeview, я должен добавить URL-адреса, может ли кто-нибудь привести некоторые примеры ........Как добавить URL в динамически созданное дерево в ASP.NET?

пожалуйста im new in 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 называется 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); 
     } 
} 
Смежные вопросы