根据 假正经哥哥 的博客整理,我第一次使用的另外的TREEVIEW,可是 做出来的效果 太卡,不知道什么原因。这次用的假正经哥哥的这篇文章。
下面贴上完整的代码,我走了很多弯路,原因就是看了回复中朋友们的代码,现在想起来其实不用那么费事吧。
前台
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="TreeView.aspx.cs" Inherits="Test_TreeView" %>
<!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></title>
<script src="../Scripts/JQuery/jquery-1.4.1.min.js" type="text/javascript"></script>
<script src="js/jquery.treeView.js" type="text/javascript"></script>
<link rel="stylesheet" href="css/treeView.css" type="text/css" />
</head>
<body>
<form id="form1" runat="server">
<div>
<script language="javascript" type="text/javascript">
$(document).ready(function () {
$.ajax({
type: "POST",
dataType: "json",
url: "TreeHandler.ashx",
success: function (data) {
var o = { showcheck: true };
o.data = data ;
$("#divTree").treeview(o);
}
});
$("#showchecked").click(function (e) {
var s = $("#divTree").getTSVs();
if (s != null)
alert(s.join(","));
else
alert("NULL");
});
$("#showcurrent").click(function (e) {
var s = $("#divTree").getTCT();
if (s != null)
alert(s.text);
else
alert("NULL");
});
});
</script>
<button id="showchecked">Get Seleceted Nodes</button>
<button id="showcurrent">Get Current Node</button>
<div id="divTree">
</div>
</div>
</form>
</body>
</html>
后台,我用的HttpHander作为数据处理的源,代码如下:
<%@ WebHandler Language="C#" Class="TreeHandler" %>
using System;
using System.Web;
using System.Data;
using System.Data.SqlClient;
public class TreeHandler : IHttpHandler {
public void ProcessRequest (HttpContext context) {
context.Response.ContentType = "application/json";
string jsonresult = GetTreeViewJson();
context.Response.Write(jsonresult);
}
public bool IsReusable {
get {
return false;
}
}
private DataTable GetTable(string commandString)
{
SqlConnection con = new SqlConnection("Server=.;DataBase=Exam;UID=sa;Pwd=xuwenwu_1983");
con.Open();
DataSet ds = new DataSet();
SqlDataAdapter da = new SqlDataAdapter(commandString, con);
da.Fill(ds);
DataTable dt = ds.Tables[0];
return dt;
}
public string GetTreeViewJson()
{
string mystr = "[";
DataTable dt = GetTable("SELECT * FROM TreeView WHERE ParentId IS NULL");
int a = dt.Rows.Count;
foreach (DataRow row in dt.Rows)
{
mystr += GetChildJson(row["Id"].ToString()) + ",";
}
mystr = mystr.Substring(0, mystr.Length - 1);
mystr += "]";
mystr = mystr.Replace("'", "\"");
return mystr;
}
//递归
private string GetChildJson(string parentId)
{
DataTable dt = GetTable("SELECT * FROM TreeView WHERE Id = '" + parentId + "'");
string strjson = "";
bool haschild = IsHasChild(parentId);
strjson = "{";
strjson += "'id':'" + parentId + "',";
strjson += "'text':'" + dt.Rows[0]["NodeName"].ToString() + "',";
strjson += "'value':'" + dt.Rows[0]["ID"].ToString() + "',";
strjson += " 'showcheck':true,";
strjson += " 'complete':true,";
strjson += "'checktate':0,";
strjson += "'hasChildren':" + haschild.ToString().ToLower() + ",";
strjson += "'ChildNodes':";
if (!IsHasChild(parentId))
{
strjson += "null}";
}
else
{
strjson += "[";
DataTable mydt = GetTable("SELECT * FROM TreeView WHERE ParentId='" + parentId + "'");
for (int i = 0; i <= mydt.Rows.Count - 1; i++)
{
strjson += GetChildJson(mydt.Rows[i]["Id"].ToString()) + ",";
}
strjson = strjson.Substring(0, strjson.Length - 1);
strjson += "]}";
}
return strjson;
}
private bool IsHasChild(string parentId)
{
DataTable dt = GetTable("SELECT * FROM TreeView WHERE ParentId ='" + parentId + "'");
if (dt.Rows.Count == 0)
{
return false;
}
else
{
return true;
}
}
}
图片资源:
数据库设计:
USE [Exam]
GO
/****** Object: Table [dbo].[TreeView] Script Date: 08/24/2011 14:33:24 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[TreeView](
[ID] [uniqueidentifier] NOT NULL,
[NodeName] [varchar](200) NULL,
[ParentId] [uniqueidentifier] NULL,
[OrderNum] [int] NULL,
CONSTRAINT [PK_TreeView] PRIMARY KEY CLUSTERED
(
[ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
CSS样式:
.ie .bbit-tree .bbit-tree-bwrap{
}
.bbit-tree ul,.bbit-tree li
{
list-style-type:none;
margin:0px;
padding:0px;
}
.bbit-tree-body
{
font-size:12px;
}
.bbit-tree-icon, .bbit-tree-ec-icon, .bbit-tree-node-cb,.bbit-tree-elbow-line, .bbit-tree-elbow, .bbit-tree-elbow-end, .bbit-tree-elbow-plus, .bbit-tree-elbow-minus, .bbit-tree-elbow-end-plus, .bbit-tree-elbow-end-minus{
border: 0 none;
height: 18px;
margin: 0;
padding: 0;
vertical-align: top;
width: 16px;
background-repeat: no-repeat;
}
.bbit-tree-node-cb
{
height:16px;
}
.bbit-tree-node-collapsed .bbit-tree-node-icon, .bbit-tree-node-expanded .bbit-tree-node-icon, .bbit-tree-node-leaf .bbit-tree-node-icon{
border: 0 none;
height: 18px;
margin: 0;
padding: 0;
vertical-align: top;
width: 16px;
background-position:center;
background-repeat: no-repeat;
}
.ie .bbit-tree-node-indent img, .ie .bbit-tree-node-icon, .ie .bbit-tree-ec-icon {
vertical-align:middle !important;
}
.bbit-tree-noicon .bbit-tree-node-icon{
width:0; height:0;
}
/* No line styles 没有线的样式 */
.bbit-tree-no-lines .bbit-tree-elbow{
background:transparent;
}
.bbit-tree-no-lines .bbit-tree-elbow-end{
background:transparent;
}
.bbit-tree-no-lines .bbit-tree-elbow-line{
background:transparent;
}
/* Arrows Vista系统树的样式只有箭头*/
.bbit-tree-arrows .bbit-tree-elbow{
background:transparent;
}
.bbit-tree-arrows .bbit-tree-elbow-plus{
background:transparent no-repeat 0 0;
}
.bbit-tree-arrows .bbit-tree-elbow-minus{
background:transparent no-repeat -16px 0;
}
.bbit-tree-arrows .bbit-tree-elbow-end{
background:transparent;
}
.bbit-tree-arrows .bbit-tree-elbow-end-plus{
background:transparent no-repeat 0 0;
}
.bbit-tree-arrows .bbit-tree-elbow-end-minus{
background:transparent no-repeat -16px 0;
}
.bbit-tree-arrows .bbit-tree-elbow-line{
background:transparent;
}
.bbit-tree-arrows .bbit-tree-ec-over .bbit-tree-elbow-plus{
background-position:-32px 0;
}
.bbit-tree-arrows .bbit-tree-ec-over .bbit-tree-elbow-minus{
background-position:-48px 0;
}
.bbit-tree-arrows .bbit-tree-ec-over .bbit-tree-elbow-end-plus{
background-position:-32px 0;
}
.bbit-tree-arrows .bbit-tree-ec-over .bbit-tree-elbow-end-minus{
background-position:-48px 0;
}
.bbit-tree-elbow-plus, .bbit-tree-elbow-minus, .bbit-tree-elbow-end-plus, .bbit-tree-elbow-end-minus{
cursor:pointer;
}
.ie ul.bbit-tree-node-ct{
font-size:0;
line-height:0;
zoom:1;
}
.bbit-tree-node{
white-space: nowrap;
}
.bbit-tree-node-el {
line-height:18px;
cursor:default;
/* cursor:pointer;*/
}
.bbit-tree-node a{
text-decoration:none;
-khtml-user-select:none;
-moz-user-select:none;
-webkit-user-select:ignore;
-kthml-user-focus:normal;
-moz-user-focus:normal;
-moz-outline: 0 none;
outline:0 none;
}
.bbit-tree-node a span{
text-decoration:none;
padding:1px 3px 1px 2px;
}
.bbit-tree-node .bbit-tree-node-disabled .bbit-tree-node-icon{
-moz-opacity: 0.5;
opacity:.5;
filter: alpha(opacity=50);
}
.bbit-tree-node .bbit-tree-node-inline-icon{
background:transparent;
}
.bbit-tree-node a:hover{
text-decoration:none;
}
/* Fix for ie rootVisible:false issue,修正一个IEdebug */
.bbit-tree-root {
zoom:1;
}
/***********这里是图标了,可以在这里替换哦*****************/
.bbit-tree-node-expanded .bbit-tree-node-icon{
background-image:url(../images/treeview/folder-open.gif);
}
.bbit-tree-node-leaf .bbit-tree-node-icon{
background-image:url(../images/treeview/leaf.gif);
}
.bbit-tree-node-collapsed .bbit-tree-node-icon{
background-image:url(../images/treeview/folder.gif);
}
.bbit-tree-node-loading .bbit-tree-node-icon{
background-image:url(../images/treeview/loading.gif) !important;
}
.bbit-tree-node .bbit-tree-node-inline-icon {
background-image: none;
}
.bbit-tree-node-loading a span{
font-style: italic;
color:#444444;
}
.bbit-tree-lines .bbit-tree-elbow{
background-image:url(../images/treeview/elbow.gif);
}
.bbit-tree-lines .bbit-tree-elbow-plus{
background-image:url(../images/treeview/elbow-plus.gif);
}
.bbit-tree-lines .bbit-tree-elbow-minus{
background-image:url(../images/treeview/elbow-minus.gif);
}
.bbit-tree-lines .bbit-tree-elbow-end{
background-image:url(../images/treeview/elbow-end.gif);
}
.bbit-tree-lines .bbit-tree-elbow-end-plus{
background-image:url(../images/treeview/elbow-end-plus.gif);
}
.bbit-tree-lines .bbit-tree-elbow-end-minus{
background-image:url(../images/treeview/elbow-end-minus.gif);
}
.bbit-tree-lines .bbit-tree-elbow-line{
background-image:url(../images/treeview/elbow-line.gif);
}
.bbit-tree-no-lines .bbit-tree-elbow-plus{
background-image:url(../images/treeview/elbow-plus-nl.gif);
}
.bbit-tree-no-lines .bbit-tree-elbow-minus{
background-image:url(../images/treeview/elbow-minus-nl.gif);
}
.bbit-tree-no-lines .bbit-tree-elbow-end-plus{
background-image:url(../images/treeview/elbow-end-plus-nl.gif);
}
.bbit-tree-no-lines .bbit-tree-elbow-end-minus{
background-image:url(../images/treeview/elbow-end-minus-nl.gif);
}
.bbit-tree-arrows .bbit-tree-elbow-plus{
background-image:url(../images/treeview/arrows.gif);
}
.bbit-tree-arrows .bbit-tree-elbow-minus{
background-image:url(../images/treeview/arrows.gif);
}
.bbit-tree-arrows .bbit-tree-elbow-end-plus{
background-image:url(../images/treeview/arrows.gif);
}
.bbit-tree-arrows .bbit-tree-elbow-end-minus{
background-image:url(../images/treeview/arrows.gif);
}
/*TreeNode 选中的Disabled的一些颜色,字体样式*/
.bbit-tree-node{
color:#000;
font: normal 11px arial, tahoma, helvetica, sans-serif;
}
.bbit-tree-node a{
color:#000;
}
.bbit-tree-node a span{
color:#000;
}
.bbit-tree-node .bbit-tree-node-disabled a span{
color:gray !important;
}
.bbit-tree-node .bbit-tree-node-over {
background-color: #eee;
}
.bbit-tree-node .bbit-tree-selected {
background-color: #d9e8fb;
}
完整源码:Jquery TreeView源码
最后数据库 大家看着建就行了 再次 感谢 不正经哥哥 感谢回复的朋友们