当前页面位置: » 丰搜网 » 文档中心 » 详细内容
c#中通过datagrid显示隶属关系
本文将介绍如何利用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==-1hti.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>
&
关键字 本文所属关键字
相关 与本文相关文章
分类 所有文章关键字导航
标准 网站致力的规范