树型DataGrid的思路

最近一直很忙,很久没来博客园写点什么东西了,难得今天有时间,我就写写树型DataGrid的思路吧!

虽然现在vs2005 都出来那么久了,可能都没多少人在用DataGrid了,但是我还是想写写这个东西,也算是一个经验的小结,还可以为要做这种功能的人提供点帮助。

最近在项目中使用到了树型的可折叠的DataGrid,要求要是无刷新的那种树型DataGrid,那就是说要在客户端执行树的折叠和展开。
形状类似这样:

+1     field1   field2...
-2     field1   field2...
  -3   field1   field2...
  -4   field1   field2...
    -5 field1   field2...
    -6 field1   field2...
+7     field1   field2...
......................
如图:Demo.JPG

还要是无限级展开的,对其只需要配置子字段名和父字段名即可。

由于时间紧,本打算在网上找适合的DataGrid控件,但是找了很久还是没有找到符合要求的,没想到.NET都出来都那么久了还是没人说说这种控件是怎么做!最后,我就只有自己做这个控件了。

下面大概说一下具体作的思路:

说说大体思路,既然是DataGrid那肯定是继承于System.Web.UI.WebControls.DataGrid的,我采用的是通过

JavaCript实现对DataGrid中特定的域(也就是特定的行进行隐藏),对于DataGrid中的树是使用给用户给的

数据源DataTable 加上一列,即树形列。JavaScript的函数主要有两个,一个ChangeImage(...)用于点击树节

点图片后的改变,collapRexpand(...)用于展开或者收拢。

详细思路:
1.自己建一个Web服务器控件继承System.Web.UI.WebControls.DataGrid
2.添加属性 子节点,父节点,以及其他你需要的属性
3.指定Tree的图片路径,一般使用IEWebControl里面的TreeView的图片
4.写JavaScript的函数 ChangeImage(...)用于点击树节点图片后的改变,collapRexpand(...)用于展开或者收拢
5.自己写绑定DataGrid的函数,而不是用原来的那个DataSource,该函数只要实现绑定你新添加的那个树形列
6.树形列是在另外一个函数里实现,那个函数主要实现树的构造,即生成树形。对于子节点要一次望父节点后面靠。对于这里我说明一下:要先计算出该节点是否为子节点,而且要通过递归计算出该节点所在的层数,然后就可以得到该节点需要网父节点后靠多少。
7.呈现控件

本人水平有限只能就写成这样,有不理解需要帮助的朋友说声,我定会尽力解答!!!

posted @ 2007-01-18 19:31 缘易姿姿 阅读(800) 评论(3)  编辑 收藏 网摘 所属分类: Asp.net(C#)DataGridC#学习资料

  回复  引用    
#1楼 2007-02-23 14:42 | Apiapia [未注册用户]
用TREEVIEW好像就可以解决了..
  回复  引用    
#2楼 2007-02-24 09:11 | 缘易姿姿 [未注册用户]
@Apiapia
那样好像不行吧,想过用TreeView,但是没试过,不知道怎么实现!
  回复  引用  查看    
#3楼 2008-04-15 14:41 | CDplayer      
我的實現了一下,有不少問題,樓主能不能發一份demo給我學習一下,謝謝!
cdplayer@yeah.net

标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2007-01-19 10:13 编辑过
Google站内搜索

China-pub 计算机图书网上专卖店!6.5万品种 2-8折!
近千种 9-95 新二手计算图书火热销售中!
开发者征途系统新作:《设计模式——基于C#的工程化实现及扩展》



相关文章:

相关链接: