2010-11-23 4 views
3

J'ai créé Dynamic Treeview dans ce Treeview je dois ajouter l'URL, pourrait-on donner quelques exemples ........Comment ajouter des URL dans une arborescence créée dynamiquement dans ASP.NET?

s'il vous plaît im nouveau dans asp.net ........ .

le code donné ci-dessous ......

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

Pouvez-vous poster le code que vous avez déjà, afin que nous puissions commencer à partir de là? –

+0

J'ai posté le code. – Raj

+0

Est-ce que les URL que vous souhaitez ajouter proviennent également de la base de données? Si oui, quel est leur nom de colonne? –

Répondre

4

en supposant que la colonne de base de données qui contient l'URL est nommé url, vous devez d'abord les extraire de la base de données:

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); 
} 

ensuite les affecter aux NavigateUrl propriétés de vos nœuds d'arbres:

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); 
     } 
} 
Questions connexes