Asp.net2.0里Treeview的复选框级联操作

       最近也没有多少事做,自己在业余的时间研究了一下Treeview的使用方法,试着做一个功能树的东东。

       刚开始做的时候可遇到了不少麻烦,并不是自己想象的那么简单,Treeview一点也不听使唤。

       1.根节点在包含子结点的时候根本不需要跳转页面,点击跟结点名称的时候需要它执行的是展开和折叠子结点。

       通过大量的网上查找资料和VS的帮助总算找到了实现方法:

// 通过设置结点的SelectAction属性
node.SelectAction  =  TreeNodeSelectAction.Expand; // 用来折叠和展开结点

 

       2.为了不让点击结点默认回发页面,可以使用以下方法实现:

方法1:
node.NavigateUrl 
=   " javascript:void(0) " ;
// 或者
node.NavigateUrl  =   " javascript:; " // 用一个 ; (分号)表示 javascript 的空语句
方法2:
node.NavigateUrl 
=   " # " ;

 

        3.实现Treeview的复选框级联操作

        看了这篇文章http://www.cnblogs.com/itrust/archive/2006/04/03/365439.aspx 后很容易就可以实现级联

        在这里感谢 博客251 提供的方法

        在上面的地址里可以下载到 用到的TreeView2.js文件

        下面是我通过一个例子的实现方法, 创建一个TreeView.asp页面

         前台代码:

ContractedBlock.gif ExpandedBlockStart.gif Code
 1<%@ Page Language="C#" AutoEventWireup="true" CodeFile="TreeView.aspx.cs" Inherits="TreeView" %>
 2
 3<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 4
 5<html xmlns="http://www.w3.org/1999/xhtml" >
 6<head runat="server">
 7    <title>无标题页</title>
 8    <script type ="text/javascript" src ="JS/TreeView2.js"></script>
 9</head>
10<script type="text/javascript">
11// 感谢博客251 http://www.cnblogs.com/itrust/archive/2006/04/03/365439.aspx
12// 级联选择
13function OnTreeNodeChecked(evt)
14ExpandedBlockStart.gifContractedBlock.gif{    
15    var element = window.event.srcElement;
16    if (!IsCheckBox(element))
17        return;
18    
19    var isChecked = element.checked;            
20    var tree = TV2_GetTreeById("TreeView1");
21    var node = TV2_GetNode(tree,element);      
22    
23    TV2_SetChildNodesCheckStatus(node,isChecked);  
24    
25    var parent = TV2_GetParentNode(tree,node);        
26    TV2_NodeOnChildNodeCheckedChanged(tree,parent,isChecked);       
27}

28</script>
29<body>
30    <form id="form1" runat="server">
31    <div>
32        <asp:TreeView ID="TreeView1" runat="server" ShowCheckBoxes="All" ShowLines="True">
33        </asp:TreeView>
34    </div>
35    </form>
36</body>
37</html>

 

       后台代码:

ContractedBlock.gif ExpandedBlockStart.gif Code
 1using System;
 2using System.Data;
 3using System.Configuration;
 4using System.Collections;
 5using System.Web;
 6using System.Web.Security;
 7using System.Web.UI;
 8using System.Web.UI.WebControls;
 9using System.Web.UI.WebControls.WebParts;
10using System.Web.UI.HtmlControls;
11using System.Data.SqlClient;
12
13public partial class TreeView : System.Web.UI.Page
14ExpandedBlockStart.gifContractedBlock.gif{
15    public SqlConnection cn;
16    public SqlCommand mycmd;
17    public SqlDataAdapter da;
18    protected void Page_Load(object sender, EventArgs e)
19ExpandedSubBlockStart.gifContractedSubBlock.gif    {
20        
21        if (!IsPostBack)
22ExpandedSubBlockStart.gifContractedSubBlock.gif        {
23            //绑定事件
24              TreeView1.Attributes.Add("onclick""OnTreeNodeChecked(event)");
25            TreeViewBind();            
26        }

27    }

28
29ContractedSubBlock.gifExpandedSubBlockStart.gif    主从表绑定#region 主从表绑定
30    private void TreeViewBind()
31ExpandedSubBlockStart.gifContractedSubBlock.gif    {
32        string constring = System.Configuration.ConfigurationSettings.AppSettings["strConn"];
33        cn = new SqlConnection(constring);
34        mycmd = new SqlCommand("select * from country", cn);
35        da = new SqlDataAdapter(mycmd);
36        DataSet ds1 = new DataSet();
37        da.Fill(ds1, "country");//读出一类
38        //读出国家名称
39        for (int i = 0; i < ds1.Tables["country"].Rows.Count; i++)
40ExpandedSubBlockStart.gifContractedSubBlock.gif        {
41            TreeNode td1 = new TreeNode();
42            td1.Text = ds1.Tables["country"].Rows[i]["country"].ToString();//大类国家列表
43            td1.Value = ds1.Tables["country"].Rows[i]["id"].ToString();
44            td1.NavigateUrl = "~/WebFiles/List.aspx?id" + td1.Value + "&" + "country=" + td1.Text;//连接地址
45            TreeView1.Nodes.Add(td1);
46            
47
48            //读出省名
49            string sql = "select * from province where id= '" + ds1.Tables["country"].Rows[i]["id"].ToString() + "'";
50            mycmd = new SqlCommand(sql, cn);
51            da = new SqlDataAdapter(mycmd);
52            DataSet ds2 = new DataSet();
53            da.Fill(ds2, "province");//读出二类
54
55            for (int j = 0; j < ds2.Tables["province"].Rows.Count; j++)
56ExpandedSubBlockStart.gifContractedSubBlock.gif            {
57                TreeNode td2 = new TreeNode();
58                td2.Text = ds2.Tables["province"].Rows[j]["province"].ToString();//二类省名
59                //td2.NavigateUrl = "~/WebFiles/List.aspx?D_ID={0}&D_Name={1}";//连接地址
60                td1.ChildNodes.Add(td2);
61
62                //读出城市名称
63                string sql3 = "select * from city where pid= '" + ds2.Tables["province"].Rows[j]["pid"].ToString() + "'";
64                mycmd = new SqlCommand(sql3, cn);
65                da = new SqlDataAdapter(mycmd);
66                DataSet ds3 = new DataSet();
67                da.Fill(ds3, "city");//读出三类
68
69                for (int k = 0; k < ds3.Tables["city"].Rows.Count; k++)
70ExpandedSubBlockStart.gifContractedSubBlock.gif                {
71                    TreeNode td3 = new TreeNode();
72                    td3.Text = ds3.Tables["city"].Rows[k]["city"].ToString();//三类城市名
73                    td2.ChildNodes.Add(td3);
74                }

75            }

76        }

77        TreeView1.DataBind();
78    }

79    #endregion

80}


 数据库的设计

SQL Services 2000 直接还原下面的文件

备份文件下载地址http://files.cnblogs.com/ZHF/treeExp.rar

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值