代码如下:
CombinColumns
次代码有以下缺点:1.单元格内容不能为模板列;
下面是转借别人的:
/// <summary>
/// used to merge cells
/// </summary>
/// <param name="dg">datagrid will be merged</param>
/// <param name="GroupColumn">merged column</param>
/// <param name="compareColumn">basis column</param>
private void spanRow(DataGrid dg,int GroupColumn,int compareColumn)
{
int i = 0;
int j = 0;
int rowSpan;
string strTemp = "";
for(i=0;i<dg.Items.Count;i++)
{
rowSpan = 1;
strTemp = dg.Items[i].Cells[compareColumn].Text;
for (j=i+1;j<dg.Items.Count;j++)
{
if (string.Compare(strTemp,dg.Items[j].Cells[compareColumn].Text) == 0)
{
rowSpan += 1;
dg.Items[i].Cells[GroupColumn].RowSpan = rowSpan;
dg.Items[j].Cells[GroupColumn].Visible = false;
}
else
{
break;
}
}
i = j -1;
}
}
/// used to merge cells
/// </summary>
/// <param name="dg">datagrid will be merged</param>
/// <param name="GroupColumn">merged column</param>
/// <param name="compareColumn">basis column</param>
private void spanRow(DataGrid dg,int GroupColumn,int compareColumn)
{
int i = 0;
int j = 0;
int rowSpan;
string strTemp = "";
for(i=0;i<dg.Items.Count;i++)
{
rowSpan = 1;
strTemp = dg.Items[i].Cells[compareColumn].Text;
for (j=i+1;j<dg.Items.Count;j++)
{
if (string.Compare(strTemp,dg.Items[j].Cells[compareColumn].Text) == 0)
{
rowSpan += 1;
dg.Items[i].Cells[GroupColumn].RowSpan = rowSpan;
dg.Items[j].Cells[GroupColumn].Visible = false;
}
else
{
break;
}
}
i = j -1;
}
}