怪事,datagridview中的列显示顺序,与设计时的顺序不同?
---------------------------------
在设计界面上,编辑列,添加了所有列,并为每个列指定了对应数据表中的字段名,
然后运行时,用代码绑定        //按部门显示
        private void showbybumen(string yf,string bm)
        {
            objgjj.GetGjjRecord(yf,bm,out mytable);
            this.dataGrid1.DataSource = mytable;
            lbljlts.Text = "记录条数:" + mytable.Rows.Count.ToString();        }其中,mytable 是一个 datatable 对象。
这样操作是对的,所有列都能取到,但是datagridview中列的顺序与设计时不一样。真是怪了。
我找不到原因在哪里,从第7列就开始不一样了。

解决方案 »

  1.   

    对了,我的sql 语句中
    select 中字段的顺序与datagridview中的顺序不一样,不知道有没有关系?我将select 语句中的顺序与 datagridview 中列的顺序写成一致后,这个问题就不发生了。但是我记得,以前 select 语句中字段的顺序是任意的,只要datagirdview 中按字段名对应上就行了,
    为何今天不行了,问题出在哪里呢?真的要求 select 语句中的字段顺序与 datagridview 中列的顺序完全一样吗?
      

  2.   

    是不是你mytable中字段名跟datagridview中的列名绑错了啊
      

  3.   

    select 出的 绑到  datatable ,datatable 的顺序就是 datagridview  的顺序
      

  4.   

    但是有些列,datatable中需要,但是不想显示到 datagridview 中,所以存在顺序不一样的情况,其实顺序对,就是 datagridview中的列,比 datatable 中的字段少,这样不行吗?有些列不需要,也不能显示在datagridview中呀,比如 自增列,比如一些隐藏的标志。
      

  5.   

    为了清楚 ,再说一次吧,
    列名绝对没有绑错,但是 datagridview 中的列名,确实比 datatable 中的字段少,因为有些字段,我不想显示出来,所以没有添加这些列到 datagridview 中。
      

  6.   

    datagridview有个不自动生成列的属性,有没有设FALSE
      

  7.   

    应该是看存储过程中的顺序是否和你需要的一样 而不是去看dt or dv的顺序```
    就是你select [] [] [] [] [] [] [] 各个的参数 是否正确
      

  8.   

    是这样,
    以下是例子我的select 语句是这样的
    select autoid,编号,姓名,公积金,备注 from 公积金表 即有 5 个字段,但是我不想显示出 autoid 列,所以我的 datagridview,我添加了4列,分别是编号,姓名,公积金,备注这样显示后,顺序就出错了。我添加了一列 autoid,把这一列放在最左边, 就正常了。
    可是我不想让 datagridview 中有 autoid 这一列呀。这一列不用显示,是保证惟一性用的,与显示无关,所以我不想显示在datagridview中
      

  9.   

    我想问,datatable 的字段 与 datagridview的列,必须要一一对应呢?
    数量一样多,顺序一模一样。 
      

  10.   

    我遇到过这种情况 在server 2000操作系统下、显示的列的顺序与设计器中的顺序不一致。在DGV中 还有个 dispalyindex 属性呢,加个监视 、观察一下。
      

  11.   

    是先绑定DatagridView,还是先设置字段?这会对字段显示顺序产生影响
      

  12.   

    由于DATAGRIDVIEW内置自动排列数据列,你可以通过datagridview.autocolumns...,这个属性以auto什么columns的,完整属性名称我就想不起来,你可以试下,这样就会根据你设计时列顺序排列了
      

  13.   

    datagridview1=null;//先置空
    datagridview1.datasource=dt; //再重新绑定
      

  14.   

    我跟LZ遇到的情况一样,但不知道我的方法你用得能不能解决,我是这样解决的:
    所有 DataTable 里 输出的字段都 要在 datagridview 设计里有对应的字段,包括 要隐藏的id列,默认列Visible 设置为False ,顺序就正确了,可以试下~