using System; using System.Collections.Generic; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; public partial class _Default : System.Web.UI.Page { #region Declarations CustomersDataObject objData = null; GridViewRow HeaderRow = null; #endregion #region Events protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { objData = new CustomersDataObject(); //DataTable dt = objData.Select().Table ; gvStylish.DataSource = objData.Select(); gvStylish.DataBind(); } } protected void gvStylish_RowCreated(object sender, GridViewRowEventArgs e) { //http://www.codeproject.com/Articles/249155/Rows-and-Columns-Merging-in-ASP-NET-GridView-Contr //http://sammisoft.net/mboard/mboard/mboard.asp?exe=view&board_id=pds&group_name=sammisoft&idx_num=194&page=22&category=0&search_category=&search_word=&order_c=intVote&order_da=asc //http://www.thaicreate.com/dotnet/forum/048135.html if (e.Row.RowType == DataControlRowType.Header) { GridView HeaderGrid = (GridView)sender; HeaderRow = new GridViewRow(0, 0, DataControlRowType.Header, DataControlRowState.Insert); for (int cellCount = 0; cellCount < e.Row.Cells.Count; cellCount++) { if (e.Row.Cells[cellCount].Text.Trim() == "CustomerID" || e.Row.Cells[cellCount].Text.Trim() == "CompanyName" || e.Row.Cells[cellCount].Text.Trim() == "ContactName") { //Row Span HeaderRow.Cells.Add(HeaderRowMerg(e, 2, cellCount, System.Drawing.Color.Gray.Name)); } else { //Col Span HeaderRow.Cells.Add(HeaderColumnMerg(e, 3, "Subjects", System.Drawing.Color.Gray.Name)); break; } } gvStylish.Controls[0].Controls.AddAt(0, HeaderRow); } } ////// Merging datarow cells /// /// /// protected void gvStylish_RowDataBound(object sender, GridViewRowEventArgs e) { if (e.Row.RowType == DataControlRowType.DataRow) { /*Merging starts*/ int _iNoOfCellsToCheck = 6; for (int rowIndex = gvStylish.Rows.Count - 2; rowIndex >= 0; rowIndex--) { GridViewRow gvRow = gvStylish.Rows[rowIndex]; GridViewRow gvPreviousRow = gvStylish.Rows[rowIndex + 1]; //for (int cellCount = 0; cellCount < gvRow.Cells.Count; cellCount++) for (int cellCount = 1; cellCount < _iNoOfCellsToCheck; cellCount++) { if (gvRow.Cells[cellCount].Text == gvPreviousRow.Cells[cellCount].Text) { gvRow.Cells[cellCount].RowSpan = gvPreviousRow.Cells[cellCount].RowSpan < 2 ? 2 : gvPreviousRow.Cells[cellCount].RowSpan + 1; gvPreviousRow.Cells[cellCount].Visible = false; } } } /*Merging ends*/ //If we want to set background color for the row //if (e.Row.Cells[0].Text.Trim().ToUpper().Contains("TOTAL")) if (e.Row.Cells[0].Text.Trim().ToUpper().Contains("MUTHU")) { SetRowBackColor(e, System.Drawing.Color.Silver.Name); } else //if (e.Row.Cells[0].Text.Trim().ToUpper().Contains("GRAND")) if (e.Row.Cells[0].Text.Trim().ToUpper().Contains("VIJAY")) { SetRowBackColor(e, "#999999"); } } } #endregion #region Functions private TableCell HeaderRowMerg(GridViewRowEventArgs e, int iRowSpan, int iIndex, string backcolor) { TableHeaderCell Cell_Header = new TableHeaderCell(); Cell_Header.Text = e.Row.Cells[iIndex].Text; Cell_Header.HorizontalAlign = HorizontalAlign.Center; Cell_Header.Font.Bold = true; Cell_Header.RowSpan = iRowSpan; Cell_Header.Style.Add("background-color", backcolor); e.Row.Cells[iIndex].Attributes.Add("style", "display: none;"); return Cell_Header; } private TableCell HeaderColumnMerg(GridViewRowEventArgs e, int iColumnSpan, string _strHeaderText, string backcolor) { TableHeaderCell cell = new TableHeaderCell(); Cell_Header.Text = _strHeaderText; Cell_Header.HorizontalAlign = HorizontalAlign.Center; Cell_Header.ColumnSpan = iColumnSpan; Cell_Header.Font.Bold = true; Cell_Header.Style.Add("background-color", backcolor); return Cell_Header; } bool IsInt(string strVal) { try { int value = int.Parse(strVal); return true; } catch { return false; } } private void SetRowBackColor(GridViewRowEventArgs e, string color) { e.Row.BackColor = System.Drawing.Color.FromName(color); e.Row.Font.Bold = true; foreach (TableCell tc in e.Row.Cells) { if (IsInt(tc.Text)) tc.Text = Convert.ToInt32(tc.Text).ToString("#,#"); } } #endregion }
Monday, December 19, 2011
Merging Gridview with Multiple Headers
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment