GridView 合并列、行类

1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Web;
5 using System.Data;
6 using System.Web.UI.WebControls;
7 /// <summary>
8 ///GridViewMergeCell 合并GridView liyang 20090916
9 /// </summary>
10 public class GridViewMergeCell
11 {
12 public GridViewMergeCell()
13 {
14 //
15 //TODO: 在此处添加构造函数逻辑
16 //
17 }
18 #region 合并单元格 合并某一行的所有列
19 public static void GroupRow(GridView gridView)
20 {
21 for (int rowIndex = gridView.Rows.Count - 2; rowIndex >= 0; rowIndex--)
22 {
23 GridViewRow row = gridView.Rows[rowIndex];
24 GridViewRow previousRow = gridView.Rows[rowIndex + 1];
25 for (int i = 0; i < row.Cells.Count; i++)
26 {
27 if (row.Cells[i].Text == previousRow.Cells[i].Text)
28 {
29 row.Cells[i].RowSpan = previousRow.Cells[i].RowSpan < 2 ? 2 :
30 previousRow.Cells[i].RowSpan + 1;
31 previousRow.Cells[i].Visible = false;
32 }
33 }
34 }
35 }
36 ///  <summary> 
37 ///  合并GridView中某行相同信息的行(单元格)
38 ///  </summary> 
39 ///  <param  name="GridView1">GridView对象</param> 
40 ///  <param  name="cellNum">需要合并的行</param>
41 public static void GroupRow(GridView gridView, int rows)
42 {
43 TableCell oldTc = gridView.Rows[rows].Cells[0];
44 for (int i = 1; i < gridView.Rows[rows].Cells.Count; i++)
45 {
46 TableCell tc = gridView.Rows[rows].Cells[i];  //Cells[0]就是你要合并的列
47 if (oldTc.Text == tc.Text)
48 {
49 tc.Visible = false;
50 if (oldTc.ColumnSpan == 0)
51 {
52 oldTc.ColumnSpan = 1;
53 }
54 oldTc.ColumnSpan++;
55 oldTc.VerticalAlign = VerticalAlign.Middle;
56 }
57 else
58 {
59 oldTc = tc;
60 }
61 }
62 }
63 #endregion
64 #region 合并单元格 合并一行中的几列
65 /// <summary>
66 /// 合并单元格 合并一行中的几列
67 /// </summary>
68 /// <param name="GridView1">GridView ID</param>
69 /// <param name="rows"></param>
70 /// <param name="sCol">开始列</param>
71 /// <param name="eCol">结束列</param>
72 public static void GroupRow(GridView gridView, int rows, int sCol, int eCol)
73 {
74 TableCell oldTc = gridView.Rows[rows].Cells[sCol];
75 for (int i = 1; i < eCol - sCol; i++)
76 {
77 TableCell tc = gridView.Rows[rows].Cells[i + sCol];  //Cells[0]就是你要合并的列
78 tc.Visible = false;
79 if (oldTc.ColumnSpan == 0)
80 {
81 oldTc.ColumnSpan = 1;
82 }
83 oldTc.ColumnSpan++;
84 oldTc.VerticalAlign = VerticalAlign.Middle;
85 }
86 }
87 #endregion
88 #region 合并单元格 合并某一列所有行
89 /// <summary>
90 /// 合并GridView中某列相同信息的行(单元格)
91 /// </summary>
92 /// <param name="GridView1"></param>
93 /// <param name="cellNum"></param>
94 public static void GroupCol(GridView gridView, int cols)
95 {
96 if (gridView.Rows.Count < 1 || cols > gridView.Rows[0].Cells.Count - 1)
97 {
98 return;
99 }
100 TableCell oldTc = gridView.Rows[0].Cells[cols];
101 for (int i = 1; i < gridView.Rows.Count; i++)
102 {
103 TableCell tc = gridView.Rows[i].Cells[cols];
104 if (oldTc.Text == tc.Text)
105 {
106 tc.Visible = false;
107 if (oldTc.RowSpan == 0)
108 {
109 oldTc.RowSpan = 1;
110 }
111 oldTc.RowSpan++;
112 oldTc.VerticalAlign = VerticalAlign.Middle;
113 }
114 else
115 {
116 oldTc = tc;
117 }
118 }
119 }
120 #endregion
121 #region 合并单元格 合并某一列中的某些行
122 /// <summary>
123 /// 合并单元格 合并某一列中的某些行
124 /// </summary>
125 /// <param name="GridView1">GridView ID</param>
126 /// <param name="cellNum"></param>
127 /// <param name="sRow">开始行</param>
128 /// <param name="eRow">结束列</param>
129 public static void GroupCol(GridView gridView, int cols, int sRow, int eRow)
130 {
131 if (gridView.Rows.Count < 1 || cols > gridView.Columns.Count - 1)
132 {
133 return;
134 }
135 TableCell oldTc = gridView.Rows[sRow].Cells[cols];
136 for (int i = 1; i < eRow - sRow; i++)
137 {
138 TableCell tc = gridView.Rows[sRow + i].Cells[cols];
139 tc.Visible = false;
140 if (oldTc.RowSpan == 0)
141 {
142 oldTc.RowSpan = 1;
143 }
144 oldTc.RowSpan++;
145 oldTc.VerticalAlign = VerticalAlign.Middle;
146 }
147 }
148 #endregion
149 }
posted @ 2011-03-31 09:35  xfyn  阅读(336)  评论(0编辑  收藏  举报