首  页 | 资讯中心 | 网络学院 | 天新汽车 | 天新手机 | 天新游戏 | 软件开发 | 考试认证
品 牌 机 | 笔 记 本 | 服 务 器 | 天新数码 - DC - DV - MP3 - MP4 - GPS - TV | 数字家庭
硬件 DIY - 主板 - CPU - 内 存 - 硬 盘 - 显示器 - 显卡 - 光驱 - 机箱 - 键鼠 - 网络设备
办公设备 | 打 印 机 | 扫 描 仪 | 投 影 仪 | 一 体 机 | 传 真 机 | 路 由 器 | 交 换 机
软件下载 | 驱动下载 | 游戏下载 | 源码下载 | 教程下载 | 站长在线 | 产品中心 | 报价中心
开发首页 | 开发语言 | .Net开发 | Java开发 | Web开发 | 移动开发 | 游戏开发 | 数据库开发 | 企业开发 | 操作系统 | 软件工程
VB VC Delphi PB BCB C++ - ASP.net C# VB.net - J2EE J2SE J2ME EJB - ASP PHP JSP CGI - MSSQL Oracle DB2 MySQL - CodingLife
  .Net开发首页 | ASP.NET | C# | VB.NET | VC++.NET | VS.NET | ADO.NET | Framework | Web Service | Remoting | .NET XML
  您现在的位置:天新网 > 软件开发 > .Net开发 > C#
C#中通过DataGrid显示隶属关系
http://dev.21tx.com 2005年06月03日 博客园 xiaodele

每日文章精萃
.Net:ASP.net中Panel控件用法 Java:Jbuilder7与Weblogic7整合开发之-
ASP:用文本+ASP打造新闻发布系统。几点补 PHP:PHP安全配置之实现安全的两个重点
JSP:编译 CGI:Perl教学 第十二篇 Perl5中的引用之
VB:数据库的结构---VB数据库入门之(二 VC:浅谈无标题窗口的拖放

  本文将介绍如何利用DataGridImageColumn列来显示数据的隶属关系,具体的效果如下图

       

  点击图标这一列,就会自动的显示它的下属数据和收缩下属数据。当然对于这个效果中,对原来的DataGridImageColumn进行了一些改动,对DataGrid的也需要一些另外的处理,还有数据也需要有要求,主要是不能对数据进行排序,不来显示会乱掉。其中排序也需要一个字段信息 我这里设置了一个 KM_XH,一个是否显示的列KM_Visible,有了这两个列,就能够很好的实现了上面的效果。

        在具体的DataGrid定义的地方需要设置下面的一些方法

private void DataGridClick(object sender,System.Windows.Forms.MouseEventArgs e)
        
{
            
//            this.dataGrid1.
            DataGrid.HitTestInfo hti = this.dataGrid1.HitTest(new System.Drawing.Point(e.X, e.Y)); 
            
if(hti.Row==-1||hti.Column==-1)
                
return;
            
if(this.dataGrid1.TableStyles[0].GridColumnStyles[hti.Column] is DataGridImageBarColumn)
            
{
                DataRow dr 
=dt.DefaultView[hti.Row].Row;
                DataRow[] drs 
= dt.Select(LSGX+"="+dr[ID].ToString());
                
if(drs.Length>0)
                
{
                    
bool visible = true;
                    
try
                    
{
                        
if(Convert.ToBoolean(drs[0][strVisible]))
                        
{
                            visible 
= false;
                        }

                    }

                    
catch
                    
{
                        visible 
= false;
                    }

                    
this.setVisible(dr,visible);
                }

            }

        }


        
/// <summary>
        
/// 设置下级的可见性
        
/// </summary>
        
/// <param name="dr"></param>
        
/// <param name="visible"></param>

        private void setVisible(DataRow dr,bool visible)
        
{
            DataRow[] drs 
= dt.Select(LSGX+"="+dr[ID].ToString());
            
foreach(DataRow drChild in drs)
            
{
                drChild[strVisible]
=visible;
                
if(!visible)
                
{
                    
this.setVisible(drChild,visible);
                }

            }

        }


        
/// <summary>
        
/// 设置图片信息
        
/// </summary>
        
/// <param name="sender"></param>
        
/// <param name="e"></param>

        private void setImage(object sender,DataGridImageCellEventArgs e)
        
{
            
try
            
{
                DataRow dr 
= dt.DefaultView[e.Row].Row;
                e.Number 
= Number(dr,0);
                e.HasList 
= HasList(dr);
                
if(e.HasList)
                
{    
                    
if(ShowList(dr))
                    
{
                        e.Image 
= this.imageList1.Images[0];
                    }

                    
else
                    
{
                        e.Image 
= this.imageList1.Images[1];
                    }

                }

                
else
                
{
                    e.Image 
= this.imageList1.Images[2];
                }

            }

            
catch
            
{
            }

        }


        
/// <summary>
        
/// 是否显示细表
        
/// </summary>
        
/// <param name="dr"></param>
        
/// <returns></returns>

        private bool ShowList(DataRow dr)
        
{
            
if(dt.Select(LSGX+"="+dr[ID].ToString()+" and "+strVisible+" = true").Length>0)
                
return true;
            
return false;
        }

        
/// <summary>
        
/// 是否有细表
        
/// </summary>
        
/// <param name="dr"></param>
        
/// <returns></returns>

        private bool HasList(DataRow dr)
        
{
            
if(dt.Select(LSGX+"="+dr[ID].ToString()).Length>0)
                
return true;
            
return false;
        }

        
/// <summary>
       &

上一篇: C#中实现DataGrid双向排序
下一篇: 如何在C#的WinForm中制作饼状图和柱状图

编辑推荐
相关内容
·Visual C# 2005快速入门之调用方法
·初探c#(七)语句(Statements)
·初探c#(九)结构(Structs)
·利用C#实现分布式数据库查询
·用C#开发网络防火墙技术分析
·浅析C#中的套接字编程
·用C#实现Web服务器
·Visual C#网络编程之TCP
·[C#学习]枚举系统安装的所有打印机
·C#中调用Windows API的要点
·C#中实现DataGrid双向排序
·ASP.NET中为DataGrid添加合计字段
·VB.NET上传图片并在DataGrid中显示
·DataGrid专题
·利用DataGrid编辑、修改、删除记录
·捕捉DataGrid的双击事件(C#版本)
·asp.net中显示DataGrid控件列序号的几种方
·DataGrid基于Access的快速分页法
·DataGrid输出到Excel并进行格式化处理
·为DataGrid列添加Radio(单选框)列
最近更新
人气最热
·C#中实现DataGrid双向排序
·如何在C#的WinForm中制作饼状图和柱状图
·Visual C#中调用Windows服务初探
·在C#程序设计中使用Win32类库
·用C#和本地Windows API操纵系统菜单
·Visual C#编写3D游戏框架示例
·使用C#编写DES加密程序的framework
·利用Visual C#实现Window管道技术
·C#取得汉字的拼音的首字母
·ADO.NET的开发场景及传统ADO的处理
·用Visual C#实现文件下载功能(1)
·多线程在Visual C#网络编程中的应用
·利用Visual C#开发一个媒体播放器
·Visual C# 编程操作Excel
·C#中实现DataGrid双向排序
·浅析C#中的套接字编程
·用C#制作图片格式转化器
·C#开发终端式短信的原理和方法
·Visual C# .NET产品概述
·C++编程人员容易犯的10个C#错误

 
·[硬件]闻名不如见面 超强功能3COM交换机
·[数码]李逵还是李鬼?“工包”森海MX500 45元
·[汽车]北京车主状告宾利一审败诉 法院认为修
·[开发]perl常用函数(适合初学者)!
·[资讯]新研究显示活泼好动更有利青少年健康成
·[游戏]《大话西游2》关于技能
·[本本]索尼(SONY)笔记本专区
·[办公]激光打印机故障维修实例
·[手机]大降600 松下VS7高清1600W色屏入3K
·[考试]房屋建筑工程专业专科考试计划
·[学院]Maya 4.0 表面材质-编辑材质(1)
·[娱乐]大忙人
 

关于我们 | 联系我们 | 广告服务 | 工作机会 | 版权声明 | 欢迎投稿 | 网站地图
Copyright © 2000-2008 , www.21tx.com , All Rights Reserved .
© 晨新科技 版权所有 Created by TXSite.net