使用一个将指定行列的gridview横向纵向合并行列,实现多复杂表头样式
调用:
GridCommon.Unitelist(this.grid1, 4);
GridCommon.GroupCol(this.grid1, 4, dt.Columns.Count);
/// <summary> /// 横向合并列 /// </summary> public static void Unitelist(GridView gv, int rowIndex) { if (gv.Rows.Count < 1) { return; } TableRow tr; for (int i = 0; i < rowIndex; i++) { tr = gv.Rows[i]; if (gv.Rows[i].Cells.Count < 1) { return; } TableCell otcell = gv.Rows[i].Cells[0]; otcell.BackColor = System.Drawing.Color.FromArgb(219, 234, 253); //System.Drawing.Color.Teal; otcell.HorizontalAlign = HorizontalAlign.Center; for (int j = 1; j < gv.Rows[i].Cells.Count; j++) { TableCell tcell = gv.Rows[i].Cells[j]; if (tcell.Text == otcell.Text) { tcell.Visible = false; if (otcell.ColumnSpan == 0) { otcell.ColumnSpan = 1; } otcell.ColumnSpan++; otcell.VerticalAlign = VerticalAlign.Middle; otcell.HorizontalAlign = HorizontalAlign.Center; otcell.BackColor = System.Drawing.Color.FromArgb(219, 234, 253); //System.Drawing.Color.Teal;213, 237, 249 otcell.Wrap = false; } else { otcell = tcell; otcell.HorizontalAlign = HorizontalAlign.Center; otcell.BackColor = System.Drawing.Color.FromArgb(219, 234, 253);//System.Drawing.Color.Teal; } } } } /// <summary> /// 纵向合并列 /// </summary> /// <param name="gv">GridView</param> /// <param name="colIndex">合并列的序号</param> public static void GroupCol(GridView gv, int rowIndex, int CellIndex) { if (gv.Rows.Count < 1) { return; } TableRow tr; for (int j = 0; j < CellIndex; j++) { TableRow oldTr = gv.Rows[0]; for (int i = 1; i < rowIndex; i++) { tr = gv.Rows[i]; if (oldTr.Cells[j].Text == tr.Cells[j].Text) { tr.Cells[j].Visible = false; if (oldTr.Cells[j].RowSpan == 0) { oldTr.Cells[j].RowSpan = 1; } oldTr.Cells[j].RowSpan++; oldTr.VerticalAlign = VerticalAlign.Middle; } else { oldTr = tr; } } } }