最近也没有多少事做,自己在业余的时间研究了一下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页面
前台代码:
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)
14{
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>
后台代码:
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
14{
15 public SqlConnection cn;
16 public SqlCommand mycmd;
17 public SqlDataAdapter da;
18 protected void Page_Load(object sender, EventArgs e)
19 {
20
21 if (!IsPostBack)
22 {
23 //绑定事件
24 TreeView1.Attributes.Add("onclick", "OnTreeNodeChecked(event)");
25 TreeViewBind();
26 }
27 }
28
29 主从表绑定#region 主从表绑定
30 private void TreeViewBind()
31 {
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++)
40 {
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++)
56 {
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++)
70 {
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 直接还原下面的文件
备份文件下载地址https://files.cnblogs.com/ZHF/treeExp.rar