惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

云风的 BLOG
云风的 BLOG
Blog — PlanetScale
Blog — PlanetScale
博客园 - 【当耐特】
博客园_首页
The GitHub Blog
The GitHub Blog
月光博客
月光博客
Hugging Face - Blog
Hugging Face - Blog
有赞技术团队
有赞技术团队
博客园 - 三生石上(FineUI控件)
D
Docker
Stack Overflow Blog
Stack Overflow Blog
WordPress大学
WordPress大学
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Apple Machine Learning Research
Apple Machine Learning Research
Vercel News
Vercel News
酷 壳 – CoolShell
酷 壳 – CoolShell
雷峰网
雷峰网
小众软件
小众软件
I
InfoQ
A
About on SuperTechFans
T
The Blog of Author Tim Ferriss
S
SegmentFault 最新的问题
Microsoft Azure Blog
Microsoft Azure Blog
博客园 - Franky

博客园 - Hermes.Liu

消息队列、AMQP和RabbitMQ 继SqlPager之后推出一款可用于前台页面的分页控件--UrlPager SqlPager2.0分页控件(使用存储过程,支持.NET2.0) SqlPager最终版[附源码和示例程序](使用存储过程进行分页) SqlPager的再次改进(带数字翻页以及翻页样式设置功能) Asp.net文件的上传与下载 [转]什么是工作分解结构(WBS)? [转]什么是CMMI? 一个继承于DropDownList的树状控件 [温故知新]c#的一些基础知识 一个简单的XML的操纵类 IBM DB2数据库使用经验小结 提供一个基于.NET的加密/解密算法[转.CNSDN.com.cn] 关于showModalDialog 的常见问题 关于在DataTable中执行DataTable.Select("条件")返回DataTable的解决方法 在DataTable中实现DataTable.Select("Distinct")功能 常用JavaScript(二) Transact SQL备忘 Microsoft SQLHelper类概述
树型DataGrid的思路
Hermes.Liu · 2007-01-18 · via 博客园 - Hermes.Liu

最近一直很忙,很久没来博客园写点什么东西了,难得今天有时间,我就写写树型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.呈现控件

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