日期:2014-05-17  浏览次数:21060 次

请教,c# dataGridView列的显示和隐藏条件设置
请教,c# dataGridView列的显示和隐藏设置

在c# winform中,dataGridView控件设置列显示。
数据库字段有 id,bianhao,name,jifen

dataGridView的列名字有: 用户ID, 编号,名称,积分

打开窗体时,判断数据库中字段 jifen等于1的数据在dataGridView显示出来,并且同时判断,bianhao包含0
就在dataGridView中显示列名为,(编号)的这个列,否则隐藏dataGridView列名为(编号)的这个列。

例如1:
数据库表
id bianhao name jifen
1 1025 小李 1
2 3325 小南 5
3 0256 小红 1
4 1565 笑笑 9

现在,打开窗体。
dataGridView显示列名:
用户ID 编号 名称 积分
1 1025 小李 1
3 0256 小红 1

效果就是这样,因为,判断积分为1的才显示,并且,编号包含0的才显示 列名(编号)
请看例2,就隐藏编号这个列名了。



例如2:
数据库表
id bianhao name jifen
1 1234 小李 1
2 1235 小南 5
3 1236 小红 2
4 1237 笑笑 9

现在,打开窗体。
dataGridView显示列名:
用户ID 名称 积分
1 小李 1

这次,列名为:(编号)的隐藏了,因为数据库字段中的:(bianhao) 中没有找到包含0的数字
所以,dataGridView中,只显示列名为:
用户ID 名称 积分



现在,请教各位写个代码,怎么样做才能达到以上的效果。
谢谢!

------解决方案--------------------
1、你返回要绑定的Dataset,就已经要是一个判断过的数据集了。

可以在数据库产生一个使用了ROW_NUMBER ( )函数的临时表,然后,where bianhao like'0%' or like'%0%' or like'0%',这样就是返回bianhao有0的记录。
如果返回的dataset.table[0].rows.count=0,说明没有返回有0的,那么动态构造datagridview的列,就不要构造bianhao列了。

2、那个datagrdibview,的列,你要根据返回的内容,动态添加,而不是直接绑定,就可以了。

3、积分为1的,类似。
------解决方案--------------------
// DataTable rd;
//看你那编号可以已0开头应该是字符
rd.DefaultView.RowFilter="(bianhao like '%0%')";
DataRow[] drow=rd.Select();
if (drow.Length > 0)
{
//设置隐藏
//如果是自动生成列就调用
// rd.Columns.Remove;
//否则设置 编号列的 visable属性为false
}
//绑定数据