动态树2070208

 public void BindFavoriteTree()
{
        
this.treeV_Favorite.Nodes.Clear();
        TreeNode node 
= new TreeNode();   //这里是创建一个根节点,就是dome中看到的Root 
        node.Text = "HelpFavorite";
        node.Value 
= "1";
        CreateChildTree(node, 
1);
        treeV_Favorite.Nodes.Add(node);
        node.SelectAction 
= TreeNodeSelectAction.Expand;

        TreeNode node1 
= new TreeNode();
        node1.Text 
= "HelpSearch";
        node1.Value 
= "2";
        CreateChildTree(node1, 
2);
        treeV_Favorite.Nodes.Add(node1);
        node1.SelectAction 
= TreeNodeSelectAction.Expand;

    }
    
protected void CreateChildTree(TreeNode _parentNode, int _parentID)
{
        
using (SqlConnection _conn = new SqlConnection(constring))
{
            SqlCommand _comm 
= new SqlCommand();
            
string sql = "SELECT IDFavorite, Title, Status, IDHelpFile FROM V_Favorite where status=@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();
                    _node.Text 
= r["Title"].ToString();
                    _node.Value 
= r["IDHelpFile"].ToString();
                    _node.ShowCheckBox 
= true;
                    
//CreateChildTree(_node, (int)r["ID"]);  //递归出子节点 
                    _parentNode.ChildNodes.Add(_node);
                }
            }
        }
    }
  

 按钮删除功能:

    protected void imgBtn_DelFavorite_Click(object sender, ImageClickEventArgs e)
    
{
        
foreach ( TreeNode node in treeV_Favorite.CheckedNodes)
        
{
            
string SelectTreeID = node.Value;
            
string strDelete = "delete from CD_HC_Favorite where IDUser='" + UserProfile.UserInfo.UserID.ToString() + "' and IDHelpFile='" + SelectTreeID + "' and status = '"+node.Parent.Value+"'";
            PubLibrary.cmdExecute(strDelete);
        }

        BindFavoriteTree();
    }

==============================================================================
下面介绍第二中方法前台:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="AutoTree.aspx.cs" Inherits="AutoTree_AutoTree" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    
<title>AutoTree</title>
</head>
<body>
<form id="form1" runat="server">
    
<div>
        
<asp:TreeView ID="AutoTree" runat="server" ShowLines="True">
        
</asp:TreeView>
        
&nbsp;&nbsp;&nbsp;&nbsp;<asp:DropDownList ID="ddlTreeNode" runat="server" DataSourceID="SqlDataSource1"
            DataTextField
="TreeName" DataValueField="TreeValue">
        
</asp:DropDownList>
        
<asp:TextBox ID="txtNode" runat="server"></asp:TextBox>
        
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionString %>"
            SelectCommand
="SELECT [TreeValue], [TreeName] FROM [AutoTree]"></asp:SqlDataSource>
        
&nbsp;&nbsp;&nbsp;&nbsp;
        
<asp:Button ID="btnSubmit" runat="server" Text="Submit" OnClick="btnSubmit_Click" Width="60px" />&nbsp;
    
</div>
    
</form>

</body>
</html>

 

 后台:

 

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 AutoTree_AutoTree : System.Web.UI.Page
{
    
protected string constring = System.Configuration.ConfigurationManager.ConnectionStrings["ConnectionString"].ToString();
    
protected void Page_Load(object sender, EventArgs e)
   
{
        
if (!Page.IsPostBack)
       
{
            InitTree();
        }

    }

    
// 递归绑定同一个表数据
    private void InitTree()
    
{
        DataTable dt 
= GetTreeViewTable();
        DataView dv 
= new DataView(dt);
        dv.RowFilter 
= "TreeParentID='0'";

        
foreach (DataRowView drv in dv)
      
{
           TreeNode node 
= new TreeNode();
            node.Text 
= drv["TreeName"].ToString();
            node.Value 
= drv["TreeValue"].ToString();
            
//node.ImageUrl = drv["TreeIco"].ToString();
            node.Expanded = true;
            AutoTree.Nodes.Add(node);
            AddReplies(dt, node);
        }

    }


    
private DataTable GetTreeViewTable()
   
{
       
        SqlConnection con 
= new SqlConnection(constring);
        SqlDataAdapter da 
= new SqlDataAdapter("SELECT * FROM AutoTree", con);
        DataTable dt 
= new DataTable();
        da.Fill(dt);
        
return dt;
    }


    
private void AddReplies(DataTable dt, TreeNode node)
    
{

            DataView dv 
= new DataView(dt);
            dv.RowFilter 
= "TreeParentID='" + node.Value + "'";
            
foreach (DataRowView row in dv)
           
{
                TreeNode replyNode 
= new TreeNode();
                replyNode.Text 
= row["TreeName"].ToString();
                replyNode.Value 
= row["TreeValue"].ToString();
                
//replyNode.ImageUrl = row["TreeIco"].ToString();
                
//replyNode.NavigateUrl = row["TreeLink"].ToString().Trim();
                
//replyNode.Target = row["TargetStr"].ToString().Trim();
                replyNode.Expanded = false;
                node.ChildNodes.Add(replyNode);
                AddReplies(dt, replyNode);
            }

    }


    
protected void btnSubmit_Click(object sender, EventArgs e)
    
{
        
//string rootID = this.AutoTree.SelectedValue;
        string rootID = ddlTreeNode.SelectedValue.ToString();
        
string txtNode = this.txtNode.Text;
        
using (SqlConnection Conn = new SqlConnection(constring))
        
{
            SqlCommand cmd 
= new SqlCommand("insert into AutoTree (TreeName,TreeParentID,TreeValue) values (@TreeName,@TreeParentID,@TreeName)", Conn);
            cmd.Parameters.Add(
"@TreeName", SqlDbType.NVarChar, 50).Value = txtNode;
            cmd.Parameters.Add(
"@TreeParentID", SqlDbType.NVarChar, 50).Value = rootID;
            Conn.Open();
            cmd.ExecuteNonQuery();
            ddlTreeNode.ClearSelection();
            ddlTreeNode.DataSourceID 
= SqlDataSource1.ID;
            
this.txtNode.Text = "";
        }
        
        
this.AutoTree.Nodes.Clear();
        InitTree();


    }

}

 

 

数据库:ID,TreeParentID,TreeValue,TreeName.

第一条数据的 TreeParentID=0,TreeValue=1


 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值