Saturday, 19 January 2013

GRIDVIEW MEARG ROWSPAN COLSPAN

How to Merge GridView Rows (Cells with Equal Values)

14th Mar 2009 There are a lot of methods in the Internet solving the problem of how to merge GridView rows if neighbour cells show equal values. My approach is not the first; however, I think, it is rather universal and very short - less than 20 lines of code.
The algorithm is simple: to bypass all the rows, starting from the second at the bottom, to the top. If a cell value is the same as a value in the previous (lower) row then to increase RowSpan and to make invisible the lower cell, and so forth.
The code that merges cells is very short:
public class GridDecorator
{
    public static void MergeRows(GridView gridView)
    {
        for (int rowIndex = gridView.Rows.Count - 2; rowIndex >= 0; rowIndex--)
        {
            GridViewRow row = gridView.Rows[rowIndex];
            GridViewRow previousRow = gridView.Rows[rowIndex + 1];

            for (int i = 0; i < row.Cells.Count; i++)
            {
                if (row.Cells[i].Text == previousRow.Cells[i].Text)
                {
                    row.Cells[i].RowSpan = previousRow.Cells[i].RowSpan < 2 ? 2 : previousRow.Cells[i].RowSpan + 1;
                    previousRow.Cells[i].Visible = false;
                }
            }
        }
    }
}
The last action is to add an OnPreRender event handler for the GridView:
protected void gridView_PreRender(object sender, EventArgs e)
{
    GridDecorator.MergeRows(gridView);
}
Download the example - 3,3 Kb

No comments:

Post a Comment

Note: only a member of this blog may post a comment.