DataGridView显示问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DataGridView显示问题相关的知识,希望对你有一定的参考价值。

我用DataGridView来显示数据库里的数据
开始时"select b,c from table"用DataGridView显示出来的列顺序正常,为“b c”但后来我又添加了一列"select a,b,c from table"用DataGridView显示出来的列顺序出问题了,不是“a b c”,而是"b c a"! 怪异啊!怎么不按SQL语句执行呢?
我是用DataAdapter.FILL方法填充数据集DataSet然后设置DataGridView.DataSource来绑定。
我写的sql语句没有问题,我把sql语句复制到SQL Server2000的查询分析器里去执行 显示完全正确,列的顺序完全按SQL语句中的顺序排列。但就是在DataGridView里显示不对!纳闷!

参考技术A 你在设计试图里把DataGridView里的绑定列的a字段放在第一位了吗? 参考技术B 你是不是把gridview的显示a的绑定列或者模板列放在最后了? 参考技术C 把vs关了,然后在打开。然后从新运行 参考技术D 看你绑定的时候是不是绑错位置了 第5个回答  2009-04-15 修改之后重新绑定了么?

Winform控件之DataGridView数据控件显示问题

       最近在做同类的信息记录管理系统时遇到了DataGridView数据控件的显示问题,可能是2015年的上半年没有深入

学习C#开发的原因,这几天重新搬出来开发,首先遇到的问题就是动态绑定数据显示的问题,琢磨了很久,在网上查

了也不少,但是对自己的数据列表显示问题还是没有做到最佳。最后解决的方法还是自己一个尝试出来的,虽然不是

很好,但最起码遇到的问题都解决了,顿时轻松了许多。

       一默认状态的绑定

       也就是没有设置DataGridView控件数据列表中的列的设置,其他的属性该设置还需设置。我们来看一下实际的效

果展示:


       默认状态下,列的宽度都是相等的,短的数据可以完全显示出来,但是一些长字段的数据没有完整的显示出来;

还有就是整个数据列表并没有撑满整个容器,在数据列表和边界之间还有一定的空白。这对管理系统的界面显示不是

很好,说白了就是用户体验也会下降,也需要改进。

       二列宽自适应绑定

       由于我的是数据时动态绑定的,这些列宽只能在代码中进行设置,这是我在网上看到的,也并不是很了解,首先

尝试一下就知道了。

       C#代码:
for (int i = 0; i < dgv_infor.ColumnCount; i++)
{
        dgv_infor.Columns[i].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;//自适应列宽
}

        dgv_infor代表是DataGridView控件,ColumnCount是动态绑定数据列表的列的个数,Columns是一个列数组集

合,后面的代码表示适用于所有的列。

        实例显示:


        这一次解决了长短字段显示的问题,但是并没有解决撑满整个容器的问题,界面并不美观,而且如果进行数据添

加或更改的时候列宽还会随着字段的长短增加或减少,于是又在自己又进行尝试。

       三设置AutoSizeColumnsMode属性

       这个只需要在DataGridView控件的属性中设置即可:


       效果:


       它撑满了整个容器,但是还是有一定的数据显示问题,同样的列宽造成一些浪费,对长字段的列还是不会完整的

显示,对于短字段的列造成一定的剩余问题。我想着把自适应列宽和这个属性一同设置和加代码编辑,很遗憾还是这

样的显示,可能是这个属性覆盖了代码中的设置吧。

       四自定义列宽Columns[i].Width

       既然上述的做法和尝试都无法满意,也就是未解决存在的问题,我就想到了可不可以自己定义每个列的宽度,在

网上找了一下,都没有具体的代码,是可以自定义列宽,但是无从下手,在代码中一个一个进行属性的尝试,试了七

八次以后终于有所显示了,为了调整合适的列宽也是花了很长的时间。

        在上面说过,Columns是列数组集合,那么它是一个数组,我们就可以对其进行每一列的设置,使其每一列都有

己合适的宽度,并且撑满整个容器。

        C#代码:

            dgv_infor.Columns[0].Width = 50;
            dgv_infor.Columns[1].Width = 50;
            dgv_infor.Columns[2].Width = 50;
            dgv_infor.Columns[3].Width = 50;
            dgv_infor.Columns[4].Width = 100;
            dgv_infor.Columns[5].Width = 200;
            dgv_infor.Columns[6].Width = 200;
            dgv_infor.Columns[7].Width = 100;
            dgv_infor.Columns[8].Width = 50;
            dgv_infor.Columns[9].Width = 100;

        效果展示:


       五感悟

       每一次的项目实践都会给自己带来一定的收获,自己很希望可以多多参与一些项目的实战,毕竟只有在实战中才

能找到自己的不足,前两天在慕课网社区看的一篇文章大二女生web开发成长之路——讲述我从软妹子到女汉子的进

阶过程,顿时就羡慕的不行,有自己的感兴趣的方向,也有个小小团队进行一起实践开发,而且还参与了那么的项目

开发,这更加激励自己该朝着什么方向去努力。



以上是关于DataGridView显示问题的主要内容,如果未能解决你的问题,请参考以下文章

C# Foreach 循环 - 继续问题

C#上位机开发—— 表格控件的使用

C#上位机开发—— 表格控件的使用

如何在 C# 中将 datagridiew 中未包含的其他数据库值显示为另一种形式? [关闭]

Easycomplete Datagridviewcombobox 列 winforms

DataGridView显示问题