DataGridView怎么获取所有列名呢?

ckuang123 2012-10-25 11:03:39
DataGridView打开一些文件,但有些会有几列,但我只需要显示其中4列(譬如第一列名:编号),我怎么隐藏其他列呢?

我一开始是这样去隐藏
dataGridView1.Columns[0].Visible = false;
,但考虑到每个文件都不同,这样不太灵活,动态隐藏列要怎么实现呢?
...全文
1402 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
XBodhi. 2012-10-25
  • 打赏
  • 举报
回复
[Quote=引用 8 楼  的回复:]
引用 2 楼 的回复:

如果你所有的数据源中都有相同的需要显示的列,那么你就循环一下,把你需要的列设为true

else 全为false即可。
for (int count = 0; count < dataGridView1.Columns.Count; count++)
{
if (dataGridView1.Columns[count].HeaderText.Tri……
[/Quote]


不执行,还有问啊, 因为 IF 不满足被。

我就不明白了,你为什么非的用 int 索引, 如果列变掉了你不是悲剧吗, 你为什么不用 string 索引



foreach(var column in this.dateGridView.Columns)
{
if(column.Caption 或 column.HeaderText == "Data")
{
......
}
}
灿烂阳光168 2012-10-25
  • 打赏
  • 举报
回复
可以动态隐藏,但是首先需要你确定在什么情况下,哪个列需要隐藏,可以检查列名称,然后再visual=false;
ckuang123 2012-10-25
  • 打赏
  • 举报
回复
去掉 ToLower() 就OK了 谢谢你们
ckuang123 2012-10-25
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

如果你所有的数据源中都有相同的需要显示的列,那么你就循环一下,把你需要的列设为true

else 全为false即可。
[/Quote] for (int count = 0; count < dataGridView1.Columns.Count; count++)
{
if (dataGridView1.Columns[count].HeaderText.Trim().ToLower() == "Date")
{

MessageBox.Show("111111111111111111");
}
}

为什么我设断点了,值为date了怎么不执行这个MessageBox.Show("111111111111111111");


ckuang123 2012-10-25
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]

不能用 Visible 的 ,这样你这 列的数据 你就读不到了, 最好的方法是要数据还不被看见就是宽度强制成 0
[/Quote]

写个循环所有列,然后条件不符合的就把宽度改为0? 其实把文件打开,我只要把需要的那4列数据保存到数据库里面去,因为每个文件数据量比较大其他的不管所以我不想显示出来,
XBodhi. 2012-10-25
  • 打赏
  • 举报
回复
不能用 Visible 的 ,这样你这 列的数据 你就读不到了, 最好的方法是要数据还不被看见就是宽度强制成 0
XBodhi. 2012-10-25
  • 打赏
  • 举报
回复
我特意看了下 有 参数为 string ColumnName 的索引器啊
风之影子 2012-10-25
  • 打赏
  • 举报
回复

protected void InitDgvGoodsInfor(DataGridView dgv)
{
for (int count = 0; count < dgv.Columns.Count; count++)
{
if (dgv.Columns[count].HeaderText.Trim().ToLower() == "goodsname")
{
dgv.Columns[count].HeaderText = "名称";
dgv.Columns[count].DisplayIndex = 0;
continue;
}
else if (dgv.Columns[count].HeaderText.Trim().ToLower() == "goodscode")
{
dgv.Columns[count].HeaderText = "商品码";
dgv.Columns[count].DisplayIndex = 1;
continue;
}
else if (dgv.Columns[count].HeaderText.Trim().ToLower() == "goodsnorm")
{
dgv.Columns[count].HeaderText = "规格型号";
dgv.Columns[count].DisplayIndex = 2;
continue;
}
else if (dgv.Columns[count].HeaderText.Trim().ToLower() == "goodsunit")
{
dgv.Columns[count].HeaderText = "计量单位";
dgv.Columns[count].DisplayIndex = 3;
continue;
}
else
{
dgv.Columns[count].Visible = false;
continue;
}
}
}
XBodhi. 2012-10-25
  • 打赏
  • 举报
回复
dataGridView1.Columns[] 没有 string 的索引器吗 。

如果你要隐藏列 还有一个方法就是吧它的 宽度给 设置成 0
风之影子 2012-10-25
  • 打赏
  • 举报
回复
如果你所有的数据源中都有相同的需要显示的列,那么你就循环一下,把你需要的列设为true

else 全为false即可。
风之影子 2012-10-25
  • 打赏
  • 举报
回复
这个还真没有什么好的办法,因为数据列不同。

要么就设计时绑定,要么就动态的用你上面的代码来实现。

这样灵活。

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧