ASP.NET基于JQUERY的高性能的TreeView

 

根据 假正经哥哥 的博客整理,我第一次使用的另外的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源码

 

最后数据库 大家看着建就行了 再次 感谢 不正经哥哥  感谢回复的朋友们

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值