C#中通过DataGrid显示隶属关系

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

        r5703889c3l5.gif

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

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

g8z4384zyg56.gif private   void  DataGridClick( object  sender,System.Windows.Forms.MouseEventArgs e)
pyi4hzimi091.gif71r471126159.gif        
1x063y7q61z9.gif {
fcm404151258.gif            
//            this.dataGrid1.
s071g8q4b80f.gif
            DataGrid.HitTestInfo hti = this.dataGrid1.HitTest(new System.Drawing.Point(e.X, e.Y)); 
u617922bi76j.gif            
if(hti.Row==-1||hti.Column==-1)
7064ir1kv16a.gif                
return;
862ccycs6566.gif            
if(this.dataGrid1.TableStyles[0].GridColumnStyles[hti.Column] is DataGridImageBarColumn)
ac0gci71ewx8.gifg6vf7n763m5g.gif            
84umr93x8n3h.gif{
mnr80x4dcbh7.gif                DataRow dr 
=dt.DefaultView[hti.Row].Row;
b3867vx6xti9.gif                DataRow[] drs 
= dt.Select(LSGX+"="+dr[ID].ToString());
gsn2ej8363c3.gif                
if(drs.Length>0)
deq3myxk0njk.gifikunf016es9r.gif                
elta646he6o4.gif{
2bp9d25kpj8l.gif                    
bool visible = true;
95fhdrsi86vi.gif                    
try
q4c483xu7100.gifks40gig46p7z.gif                    
e5zqqxgag007.gif{
32ch0788dhh9.gif                        
if(Convert.ToBoolean(drs[0][strVisible]))
nb0jh1340409.gifaz30s518cv1y.gif                        
7mpn53350n67.gif{
i06qsl063081.gif                            visible 
= false;
183xi0f1a5c7.gif                        }

6e1j4onx9e0d.gif                    }

4bq19x19tqm4.gif                    
catch
y570i95rln0d.gifjs3s40qvucje.gif                    
0jh1bry05pi7.gif{
zsi983y7pr9n.gif                        visible 
= false;
66rwn579234g.gif                    }

4157a03qig8m.gif                    
this.setVisible(dr,visible);
j5d6o573du54.gif                }

t7c98a28sot3.gif            }

7kh0827t6lv6.gif        }

85yy16eeu2tg.gif
6642p5lgnw4v.gifv685v3pyq458.gif        
/**/ /// <summary>
0jjojw8135px.gif        
/// 设置下级的可见性
i12wx347b91j.gif        
/// </summary>
4vxl50t1k6ns.gif        
/// <param name="dr"></param>
mar0tqih17jy.gif        
/// <param name="visible"></param>

u45ia69bot7l.gif          private   void  setVisible(DataRow dr, bool  visible)
89c011187g42.gifh8y8si658778.gif        
79xd5gx81s52.gif {
7e4n86oa1lb2.gif            DataRow[] drs 
= dt.Select(LSGX+"="+dr[ID].ToString());
9xp06avcg4jh.gif            
foreach(DataRow drChild in drs)
pbx7e4ac1l55.gifjft1o2l7c643.gif            
3mpj80mzw139.gif{
sjzccqo0auvy.gif                drChild[strVisible]
=visible;
he1506l444m8.gif                
if(!visible)
b32b07a46494.gifa52551hgaj5s.gif                
01vmh9vf4aj3.gif{
r273lju8akcp.gif                    
this.setVisible(drChild,visible);
502la45520iu.gif                }

dy6r29o0gy36.gif            }

h12p3ej9tk3k.gif        }

rql5bsr13y3d.gif
xc3e16811421.gifp4zlbg076z85.gif        
/**/ /// <summary>
82gspf80nmja.gif        
/// 设置图片信息
begt8uot8r7z.gif        
/// </summary>
us3ty3r1wgk0.gif        
/// <param name="sender"></param>
jv46l3b02700.gif        
/// <param name="e"></param>

dck5r0d7d0c3.gif          private   void  setImage( object  sender,DataGridImageCellEventArgs e)
72n99c12763x.gif7ea0q8nvq0tq.gif        
u6o19w8gr11i.gif {
ox7w6ibj7m68.gif            
try
ql5t6e13ujdx.gifzw1x6i9184ax.gif            
5nvo718vg585.gif{
xo9s48dx7ado.gif                DataRow dr 
= dt.DefaultView[e.Row].Row;
az98ribzxq46.gif                e.Number 
= Number(dr,0);
gla3300952be.gif                e.HasList 
= HasList(dr);
jyl4srx3qfr2.gif                
if(e.HasList)
6w63x1s7p6h4.gif2wk919j041f2.gif                
0k406c901i08.gif{    
pir867n3ir04.gif                    
if(ShowList(dr))
1337le2ef277.gifeu0r32et1061.gif                    
4ebn5313l3dn.gif{
0pqd7kg09ar0.gif                        e.Image 
= this.imageList1.Images[0];
3b126565zm5g.gif                    }

xu4402e1417i.gif                    
else
v42l5ku101xf.gifqtn65969i537.gif                    
nc4034vsba92.gif{
0y5c2391e9b6.gif                        e.Image 
= this.imageList1.Images[1];
0by24dx62ox2.gif                    }

xgg5538569ks.gif                }

9447u7wns1k7.gif                
else
3ucd5705822t.gif72e98220s3ta.gif                
a10d5q11a0d4.gif{
vywvpv0eqg51.gif                    e.Image 
= this.imageList1.Images[2];
naq9ri9yct9w.gif                }

t2162n82c70d.gif            }

b9e9dpb542bg.gif            
catch
r8h7496rky78.gifh8puqaekb22i.gif            
6o0741qq0m98.gif{
2n3j78568v4n.gif            }

duphxbg77tl9.gif        }

pjr7ci3vv29i.gif
960u8oz5wo3c.gif02j85enq1j0f.gif        
/**/ /// <summary>
57r44j87300a.gif        
/// 是否显示细表
wi6hj05y2oe6.gif        
/// </summary>
1c0111x7a5ry.gif        
/// <param name="dr"></param>
6016klwatr2y.gif        
/// <returns></returns>

950r643kmgnx.gif          private   bool  ShowList(DataRow dr)
58ze8q867028.gifvl7wui7cel70.gif        
8e265trm8x4e.gif {
lt1hmbnvid6f.gif            
if(dt.Select(LSGX+"="+dr[ID].ToString()+" and "+strVisible+" = true").Length>0)
9mlbny3q4833.gif                
return true;
e20lje0tqvrc.gif            
return false;
mr6f0d5jpqwq.gif        }

ulsx038vhqu6.gifh709lj75v243.gif        
/**/ /// <summary>
2494up94pa51.gif        
/// 是否有细表
1rbur6q95gi1.gif        
/// </summary>
6la6q9br6u69.gif        
/// <param name="dr"></param>
c69qbg7uf4c5.gif        
/// <returns></returns>

km9ocr3qb64v.gif          private   bool  HasList(DataRow dr)
kfo3922j8m42.gif21f08j3pj698.gif        
53ih2de9u0tw.gif {
7538tilb7602.gif            
if(dt.Select(LSGX+"="+dr[ID].ToString()).Length>0)
4d93wro5u400.gif                
return true;
gs0py7j432m3.gif            
return false;
6wqlcx28844k.gif        }

clk5i1ce58z6.gifdnum0g357iu8.gif        
/**/ /// <summary>

转载于:https://www.cnblogs.com/hzuIT/articles/472790.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值