对于http://www.dojochina.com/?q=node/578对ExtJs动态加载树,现在给出.net版本。首先数据库结构表一样。这里我用的是sqlserver 2000 DDL如下:
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_LoadTree_LoadTree]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
ALTER TABLE [dbo].[LoadTree] DROP CONSTRAINT FK_LoadTree_LoadTree
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[LoadTree]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[LoadTree]
GO
CREATE TABLE [dbo].[LoadTree] (
[ItemID] [int] NOT NULL ,
[ItemName] [varchar] (20) COLLATE Chinese_PRC_CI_AS NULL ,
[ParentID] [int] NOT NULL ,
[IsAvailable] [int] NULL
) ON [PRIMARY]
GO
在Ext中 Tree.AsyncTreeNode实现对树结点的异步加载。此时我们只需让服务端生成指定格式的Json字符串(格式可参看Ext的例子)。js代码依然是惯例,这里我还是把他贴出来。
下面就是服务端的事。个人认为可以用sql语句递归查处。再生成json应该会更简单,但我sql还没写出来。所以我是先全部读到datatable中,在datatable中进行的各种处理。下面为服务端完整代码:
看看效果,呵呵!!!Ok