今天修改旧的项目,发现之前用到的显示数据表格合并单元格代码不适用于模板列。做了修改之后记录下来。
两种方法,第一种适用于所有情况,第二种适用于合并依据列非模板列。
两种方法如下:
方法一:
<代码>///& lt; summary>///合并显示数据表格中某列相同信息的行(单元格)包含模板列根据ID=rowspanid的hiddenfield控件的值来合并需。要合并的单元格需加上这个控件。根据控件值合并。可以将控件放在某一列,也可以放在每一列。取值的时候分开就行。此方法适合任意列,特别是模板列无法取cell.text的时候///& lt;/summary>///& lt;参数name=" GridView1祝辞GridView///& lt;参数name=" cellNums祝辞合并第几列& lt;/param>///& lt;参数name=" rowspanid祝辞合并依据控件ID,这里用的hiddenfield控件。只需将ID=rowspanid的hiddenfield控件放在单元格里即可& lt;/param> 公共静态孔隙GroupRows (int [] cellNums, GridView GridView1字符串rowspanid=癶frowspan”) { foreach (int cellNum cellNums) { int i=0, rowSpanNum=1; 虽然(我& lt;GridView1.Rows。数- 1) { GridViewRow gvr=GridView1.Rows[我]; + +我;我& lt;GridView1.Rows.Count;我+ +) { GridViewRow gvrNext=GridView1.Rows[我]; 如果(((HiddenField) gvr.Cells [cellNum] .FindControl (rowspanid))。值=https://www.yisu.com/zixun/=((HiddenField) gvrNext.Cells [cellNum] .FindControl (rowspanid)) Value) { gvrNext.Cells [cellNum]。可见=false; rowSpanNum + +; } 其他的 { gvr.Cells [cellNum]。行宽=rowSpanNum; rowSpanNum=1; 打破; } 如果(i==GridView1.Rows。数- 1) { gvr.Cells [cellNum]。行宽=rowSpanNum; } } } } } 代码>
方法二:
<代码>///& lt; summary>///根据某一列合并其他列。依据的列不能是模板列,否则请用上一个方法↑。///& lt;/summary>///& lt;参数name=" GridView1祝辞GridView///& lt;参数name=" cellNums祝辞合并第几列,数组& lt;/param>///& lt;参数name=" byCellNum祝辞依据第几列& lt;/param> 公共静态孔隙GroupRowsByOne (int, int [] cellNums GridView GridView1 byCellNum) { foreach (int cellNum cellNums) { int i=0, rowSpanNum=1; 虽然(我& lt;GridView1.Rows。数- 1) { GridViewRow gvr=GridView1.Rows[我]; + +我;我& lt;GridView1.Rows.Count;我+ +) { GridViewRow gvrNext=GridView1.Rows[我];//如果(((HiddenField) gvr.Cells [cellNum] .FindControl (rowspanid))。值=https://www.yisu.com/zixun/=((HiddenField) gvrNext.Cells [cellNum] .FindControl (rowspanid)) Value) 如果(gvr.Cells [byCellNum]。文本==gvrNext.Cells [byCellNum]。Text) { gvrNext.Cells [cellNum]。可见=false; rowSpanNum + +; } 其他的 { gvr.Cells [cellNum]。行宽=rowSpanNum; rowSpanNum=1; 打破; } 如果(i==GridView1.Rows。数- 1) { gvr.Cells [cellNum]。行宽=rowSpanNum; } } } } }代码>