网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 大学论文导航 设计下载 最新论文 下载排行 原创论文 论文源代码
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > ASP.net > 正文

玩转DataGridView之行的展开与收缩

来源:http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 13/01/05

很多数据都有父节点与子节点,我们希望单击父节点的时候可以展开父节点下的子节点数据。

比如一个医院科室表,有父科室与子科室,点击父科室后,在父科室下面可以展现该科室下的所有子科室。

我们来说一下在DataGridView中如何实现这个功能。

首先,创建示例数据:

示例数据SQL

  1. create table Department  
  2. (  
  3.  ID int identity(1,1) not null,  
  4.  DName varchar(20) null,  
  5.  DparentId int null,  
  6.  Dtelphone varchar(20) null,  
  7.  Dhospital varchar(50) null 
  8. )  
  9.  
  10. insert into Department values(''门诊外室'',1,''1111'',''XXX医院'')  
  11. insert into Department values(''门诊内科'',1,''2222'',''XXX医院'')  
  12. insert into Department values(''门诊手术'',1,''3333'',''XXX医院'')  
  13. insert into Department values(''门诊儿科'',1,''4444'',''XXX医院'')  
  14. insert into Department values(''神经内室'',2,''5555'',''XXX医院'')  
  15. insert into Department values(''神经外科'',2,''6666'',''XXX医院'')  
  16. insert into Department values(''住院手术'',2,''7777'',''XXX医院'')  
  17. insert into Department values(''住院康复'',2,''8888'',''XXX医院''

其实思路很简单,就是在展开父节点的时候,在父节点下插入新的DataGridViewRow;收缩父节点的时候,在父节点下删除该子节点的DataGridViewRow。

为了简便,代码中的数据读取我都直接硬编码了。

加载父节点数据,除了数据库中的列外我还新加了两列:IsEx与EX。

  1. private void DataGridBing(DataTable table)  
  2.         {  
  3.             if (table.Rows.Count > 0)  
  4.             {  
  5.                 for (int i = 0; i < table.Rows.Count; i++)  
  6.                 {  
  7.                       
  8.                     int k = this.dataGridView1.Rows.Add();  
  9.                     DataGridViewRow row = this.dataGridView1.Rows[k];  
  10.                     row.Cells["ID"].Value = table.Rows[i]["ID"];  
  11.                     row.Cells["DName"].Value = table.Rows[i]["DName"];  
  12.                     row.Cells["Daddress"].Value = table.Rows[i]["Daddress"];  
  13.                     row.Cells["Dtelphone"].Value = table.Rows[i]["Dtelphone"];  
  14.                     //用于显示该行是否已经展开  
  15.                     row.Cells["IsEx"].Value = "false";  
  16.                     //用于显示展开或收缩符号,为了简单我就直接用字符串了,其实用图片比较美观  
  17.                     row.Cells["EX"].Value = "+";  
  18.                 }  
  19.             }  
  20.         } 

  • 上一篇资讯: ASP.NET 预定义模板
  • 网学推荐

    免费论文

    原创论文

    设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
    版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号