您的位置:首页 > 其它

动态载入数据的无刷新TreeView控件(6)

2005-03-24 11:02 483 查看
既然是动态的载入数据的TreeView,那么服务器端的数据也同时应该以一种树型结构来保存。通过客户端发送节点标识,返回该节点下的子节点数据从而动态生成子节点。下面是一个模拟文件夹数据存放结构的服务器端数据获取示例。

我们设计这样一张数据库表来存放文件夹数据结构:

CREATE TABLE [T_202_118_224_132] (
[DirIndex] [int] NOT NULL ,
[Name] [varchar] (256) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[Size] [int] NOT NULL ,
[Date] [char] (12) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[FatherID] [int] NOT NULL ,
[ID] [int] IDENTITY (1, 1) NOT NULL
) ON [PRIMARY]
// 实际上上面数据来之于存放在数据库中的一个FTP服务器的目录结构信息

数据库表预览如下:

DirIndexNameSizeDateFatherIDID
1Movie-1 Mar 29 07:2301
2DV作品-1 Mar 22 10:2812
3xjtu我的黄金时代-vivi-1 Mar 22 10:2923
-1MyGoldenAgeA.rm1.52E+08 Mar 14 15:4934
-1MyGoldenAgeB.rm1.38E+08 Mar 14 15:4935
-1花絮.rm65196399 Mar 14 15:4936
4夏日勇气-1 Mar 22 10:2827
-1夏日勇气.rm1.91E+08 Mar 14 20:3148
5大陆-1 Apr 2 02:0119
6爱情麻辣烫-1 Mar 22 10:28510
-1001.rm1.07E+08 Mar 15 08:35611
-1002.rm72386955 Mar 15 08:42612
7大鸿米店-leonado-1 Mar 29 10:07513
-101.rm1.59E+08 Mar 29 10:08714
-102.rm91197989 Mar 29 10:08715
......... .........
这里ID是数据库主键,我们将其作为TreeNode的标识,在展开一个TreeNode时,向服务器发送这个标识,服务器返回TreeNode的子节点信息。关于这个返回的数据格式,为了便于客户端处理,我们把子节点信息以一个二维数组的方式返回给客户端,这样一来客户端只需要执行eval(data),就可以得到一个存放TreeView子节点的原数据对象。

假如我们使用,http://localhost/TreeView/GetTreeNodes.aspx?nid=1向服务器请求数据,那么服务器将返回:

[
["1","Movie","-1","Mar 29 07:23"],
["84","Other","-1","Apr 5 14:16 "],
["95","Tv","-1","Apr 2 01:39 "],
["174","incoming","-1","Apr 1 23:37 "],
["-1","welcome.msg","440","Mar 31 12:46"]
] 使用数组的Literal Syntax特性,我们执行eval(remotedata),就得到了一个JScript的二维数组。

如果我们使用同步xmlhttp来取这段数据,这个返回格式已经非常的精简并且便于使用了。可是如果是以xmlhttp的异步执行方式来展开TreeView的节点,那么为了防止客户端插入子节点出错,我们还需要在返回数据中同时输出被Load节点的标志,以便于在异步回调函数执行时,准确确定子节点的加载位置。所以最后服务器返回的子节点信息格式为:

1$[["1","Movie","-1","Mar 29 07:23"],["84","Other","-1","Apr 5 14:16 "],["95","Tv","-1","Apr 2 01:39 "],["174","incoming","-1","Apr 1 23:37 "],["-1","welcome.msg","440","Mar 31 12:46"]] 开头的$之前数据就是被Load节点的标识,当然放在什么位置随便了,只要便于客户端脚本将其取出就行。如果不返回这个标识,要实现异步动态装载TreeView子节点将会非常的困难,很容易出现节点装载位置错误的问题(我们讲异步装载节点的回调函数时会详细说的)。

附服务器端代码示例:

namespace TreeView
什么也不要留!!!

to be continued . . .
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: