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;
}
}
}