protected void gv_DataBound(object sender, EventArgs e)
{
for (int row = 0; row < gv.Rows.Count; row++)
{
for (int col = 0; col < gv.Rows[row].Cells.Count; col++)
{ int cut1 = 1;
while
(
cut1 + row < gv.Rows.Count && gv.Rows[row].Cells[col].Text == gv.Rows[cut1 + row].Cells[col].Text
)
++cut1;
gv.Rows[row].Cells[col].RowSpan = cut1;
for (; cut1 > 1; cut1--)
{
if (cut1 + row <= gv.Rows.Count)
{
gv.Rows[row + cut1 - 1].Cells[col].Visible = false;
}
}
}
}
}