200

用一个datatable做为datagridview的datasource后,如何设置将某一列的值作为每一行的标头?
我用这样的办法
foreach(DataGridViewRow row in grid)
{
  row.HeaderCell.Value = row.Cells["..."].Value;
}
但是问题很多。有时候根本就显示不出来,有时候对gird排序的时候标头就没有了。
不知道为什么。
不知道大家有没有遇到这样的问题。
路过的朋友请帮忙,顶着有分。200够分的吧。

解决方案 »

  1.   

    但是问题很多。有时候根本就显示不出来,有时候对gird排序的时候标头就没有了。
    不知道为什么。----------------------------------------------------------------
    排序的时候,
    foreach(DataGridViewRow row in grid)
    {
      row.HeaderCell.Value = row.Cells["..."].Value;
    }这段代码还会执行一次吗?
      

  2.   

    排序的时候,
    foreach(DataGridViewRow row in grid)
    {
      row.HeaderCell.Value = row.Cells["..."].Value;
    }这段代码还会执行一次吗?
    ----------------------------
    不会
      

  3.   

    你在DataGridStyle里面写  先将要成为列头的行值求出来  把grid的列头值赋上就ok了   我以前搞过   不行的话就改  datatable  绝对可以
      

  4.   

    嗯。如何排序,是自己的方法?还是datagridview的?
    排序的过程会不会把行的标头的数据冲掉?
      

  5.   

    嗯。如何排序,是自己的方法?还是datagridview的?
    排序的过程会不会把行的标头的数据冲掉?
    ---------排序是用户做的,点击列头进行排序,datagridview的自带功能。
      

  6.   

    你在DataGridStyle里面写  先将要成为列头的行值求出来  把grid的列头值赋上就ok了   我以前搞过   不行的话就改  datatable  绝对可以--------------这位朋友能说清楚一些吗?
    你说的改datatable的方法可行?datatable没有行标头的概念吧?!
      

  7.   

    嗯。
    这就说明,datagridview自带的这个排序会把数据重新邦定一次,而此时你的代码没有自动执行,所以就没有行头了。不知如此分析正否?
      

  8.   

    你在DataGridStyle里面写  先将要成为列头的行值求出来  把grid的列头值赋上就ok了   我以前搞过   不行的话就改  datatable  绝对可以--------------我这里讲的是DataGridView而不是DataGrid,DataGridView里面没有DataGridStyle吧
      

  9.   

    嗯。
    这就说明,datagridview自带的这个排序会把数据重新邦定一次,而此时你的代码没有自动执行,所以就没有行头了。不知如此分析正否?
    -------------可能是这样的原因,可是今天我做另一个gridview的时候竟然直接不显示了,都不用等排序再消失,晕死。
    我想是不是这个方法不适用于绑定的gridview?
      

  10.   

    第一次用datagridview,这个控件的方法和属性很多,用得不是很顺手。我是想有没有内置的方法可以把一个列绑定为行标头
      

  11.   

    不会吧?
    gridview只要给它的table有值,它就会显示的。能不能截获这个排序事件?在其中进行处理即可。
      

  12.   

    1:确定你的table中有值
    2:用你的方法给首列赋值
    3:重新排序时,调用你的方法。
    我只知道这么多。期待高人给出其它思路。
      

  13.   

    不会吧?
    gridview只要给它的table有值,它就会显示的。能不能截获这个排序事件?在其中进行处理即可。
    ------------有值没有错啊,可是table没有行标头的概念。
    这个行标头只能够通过再次加工才能加上去。
    而且我现在遇到的问题不只是在排序后才发生了。
    说明我这种改变行标头的方法是缺陷的。
    有没有别的办法对行标头进行赋值呢?!
      

  14.   

    如果是vs2003的話,我建議用DataGridTableStyle來做,這樣可以很方便的定義DataGrid的風格。
      

  15.   

    1:确定你的table中有值
    2:用你的方法给首列赋值
    3:重新排序时,调用你的方法。
    我只知道这么多。期待高人给出其它思路。
    ------------------------
    重新排序再调用行标头赋值的办法太过于蹩脚。
    我想不应该用这样的解决办法的。而且我再强调一下,我的问题有发生在未排序之前,所以不一定是排序的关系了!
      

  16.   

    row.HeaderCell.Value = row.Cells["..."].Value.tostring.trim;
      

  17.   

    在Sorted事件中重新执行一下
    foreach(DataGridViewRow row in grid)
    {
    row.HeaderCell.Value = row.Cells["..."].Value;
    }HeaderCell只是一个标签
    估计MS在重绘grid后会清空这个东西
      

  18.   

    估计MS在重绘grid后会清空这个东西-----------
    可是在非绑定的gridview中不会出现这样的情况!
      

  19.   

    datagridview???到底是datagrid还是gridview
    要是GridView不是应该这样写吗foreach(GridViewRow row in this.GridView1.Rows)
      

  20.   

    datagridview???到底是datagrid还是gridview
    要是GridView不是应该这样写吗foreach(GridViewRow row in this.GridView1.Rows)
    ------
    datagridview
    VS2005的新控件
      

  21.   

    有個笨辦法不知道行不行:在SQL里將數据源行列轉換排好序后再讀到datatable里
      

  22.   

    樓主不是要将某一列的值作为每一行的标头嗎?
    偶說的行列轉換就是將某個字段里的值轉成字段名。是不是這樣的效果
    http://blog.csdn.net/hz_hyang/archive/2006/11/10/1377786.aspx
      

  23.   

    在paint事件中寫入排序的方法。
    主要是點繫排序時,會重新畫整個控件,而導致你前面設定的行的標頭無效。
    把foreach(DataGridViewRow row in grid)
    {
      row.HeaderCell.Value = row.Cells["..."].Value;
    }
    放到paint事件中試試。
      

  24.   

    lrd820(秋之枫) ( ) 信誉:100    Blog  2006-11-30 16:55:11  得分: 0  
     
     
       
    樓主不是要将某一列的值作为每一行的标头嗎?
    偶說的行列轉換就是將某個字段里的值轉成字段名。是不是這樣的效果
    http://blog.csdn.net/hz_hyang/archive/2006/11/10/1377786.aspx  
     
    我想不是要这样的。
      

  25.   

    接分,幫鼎。1有时候根本就显示不出来
    在formload事件加
    foreach(DataGridViewRow row in grid)
    {
      row.HeaderCell.Value = row.Cells["..."].Value;
    }
      
    2有时候对gird排序的时候标头就没有了。
    在sort事件加以上代码.
    -------------------