DataGrid行数据合并

来源:互联网 发布:绿色食品发展前景 知乎 编辑:程序博客网 时间:2024/04/30 12:17

   DataGrid显示数据比较方便,有时候一列中好多行数据一样我们就需要合并某列中数据相同的行,方法如下:

/// 合并DataGrid中的某列中的数据一样的行
  /// </summary>
  /// <param name="MyDataGrid">要操作的DataGrid</param>
  /// <param name="ColumnIndex">要操作的列Index</param>
  /// <param name="BackColor">该列的背景色</param>
  /// <param name="ForeColor">该列的字体色</param>
  public static void DataGridRowSpan(DataGrid MyDataGrid ,int ColumnIndex,Color BackColor,Color ForeColor)
  {
   string strTmp = "" ;
   int SpanCount = 1 ;
   int SpanStart = 1 ;
   int SpanOffSet = 0 ;
   int RowIndex = 0 ;

   for ( RowIndex = 0 ; RowIndex < MyDataGrid.Items.Count ; RowIndex++ )
   {

    MyDataGrid.Items[RowIndex].Cells[ColumnIndex].BackColor = BackColor;
    MyDataGrid.Items[RowIndex].Cells[ColumnIndex].ForeColor = ForeColor;

    if (strTmp == MyDataGrid.Items[RowIndex].Cells[ColumnIndex].Text)
    {
     SpanCount++;
    }
    else
    {
     strTmp = MyDataGrid.Items[RowIndex].Cells[ColumnIndex].Text ;
     if ( RowIndex != 0 )
     {
      MyDataGrid.Items[SpanStart].Cells[ColumnIndex].RowSpan = SpanCount ;
      for ( SpanOffSet = 1 ; SpanOffSet < SpanCount ; SpanOffSet++)
      {
       MyDataGrid.Items[SpanStart + SpanOffSet].Cells[ColumnIndex].Visible=false;
      }
     }
     SpanStart = RowIndex ;
     SpanCount = 1;
    }
   }
   if ( RowIndex != 0 )
   {
    MyDataGrid.Items[SpanStart].Cells[ColumnIndex].RowSpan = SpanCount ;
    for ( SpanOffSet = 1 ; SpanOffSet < SpanCount ; SpanOffSet++ )
    {
     MyDataGrid.Items[SpanStart + SpanOffSet].Cells[ColumnIndex].Visible=false;
    }
   }
  }

原创粉丝点击