GridView合并单元格
来源:互联网 发布:matlab给数据加噪声 编辑:程序博客网 时间:2024/06/05 03:15
GridView合并单元格,引合并单元格,实际上是合并数据结构.然后把处理后的数据绑定到GridView控件中.
关键代码:
/// <summary> /// 合并GridView单元格 /// </summary> public class MergeGridViewCell { /// <summary> /// GridView合并行, /// </summary> /// <param name="gv">GridView</param> /// <param name="startCol">开始列</param> /// <param name="endCol">结束列</param> public static void MergeRow(GridView gv, int startCol, int endCol) { RowArg init = new RowArg() { StartRowIndex = 0, EndRowIndex = gv.Rows.Count - 2 }; for (int i = startCol; i < endCol + 1; i++) { if (i > 0) { List<RowArg> list = new List<RowArg>(); //从第二列开始就要遍历前一列 TraversesPrevCol(gv, i - 1, list); foreach (var item in list) { MergeRow(gv, i, item.StartRowIndex, item.EndRowIndex); } } //合并开始列的行 else { MergeRow(gv, i, init.StartRowIndex, init.EndRowIndex); } } } /// <summary> /// 合并GridView单元格 /// </summary> /// <param name="gv">要合并的GridView</param> /// <param name="cols">制定的列,要按照顺序传入</param> public static void MergeRow(GridView gv, params int[] cols) { RowArg init = new RowArg() { StartRowIndex = 0, EndRowIndex = gv.Rows.Count - 2 }; for (int i = 0; i < cols.Length; i++) { if (i > 0) { List<RowArg> list = new List<RowArg>(); //从第二列开始就要遍历前一列 TraversesPrevCol(gv, cols[i - 1], list); foreach (var item in list) { MergeRow(gv, cols[i], item.StartRowIndex, item.EndRowIndex); } } //合并开始列的行 else { MergeRow(gv, i, init.StartRowIndex, init.EndRowIndex); } } } /// <summary> /// 遍历前一列 /// </summary> /// <param name="gv">GridView</param> /// <param name="prevCol">当前列的前一列</param> /// <param name="list"></param> private static void TraversesPrevCol(GridView gv, int prevCol, List<RowArg> list) { if (list == null) { list = new List<RowArg>(); } RowArg ra = null; for (int i = 0; i < gv.Rows.Count; i++) { if (!gv.Rows[i].Cells[prevCol].Visible) { continue; } ra = new RowArg(); ra.StartRowIndex = gv.Rows[i].RowIndex; ra.EndRowIndex = ra.StartRowIndex + gv.Rows[i].Cells[prevCol].RowSpan - 2; list.Add(ra); } } /// <summary> /// 合并单列的行 /// </summary> /// <param name="gv">GridView</param> /// <param name="currentCol">当前列</param> /// <param name="startRow">开始合并的行索引</param> /// <param name="endRow">结束合并的行索引</param> private static void MergeRow(GridView gv, int currentCol, int startRow, int endRow) { for (int rowIndex = endRow; rowIndex >= startRow; rowIndex--) { GridViewRow currentRow = gv.Rows[rowIndex]; GridViewRow prevRow = gv.Rows[rowIndex + 1]; if (currentRow.Cells[currentCol].Text != "" && currentRow.Cells[currentCol].Text != " ") { if (currentRow.Cells[currentCol].Text == prevRow.Cells[currentCol].Text) { currentRow.Cells[currentCol].RowSpan = prevRow.Cells[currentCol].RowSpan < 1 ? 2 : prevRow.Cells[currentCol].RowSpan + 1; prevRow.Cells[currentCol].Visible = false; } } } } class RowArg { public int StartRowIndex { get; set; } public int EndRowIndex { get; set; } } }
运行效果图:
演示案例下载地址:http://download.csdn.net/detail/lovegonghui/9266073
0 0
- 合并GridView中的单元格
- GridView合并单元格
- GridView合并表头单元格
- gridview合并单元格
- 合并GridView 的单元格
- 合并Gridview单元格
- 合并GridView中的单元格
- GridView合并单元格
- GridView 单元格的合并
- GridView合并单元格
- 合并 GridView 的单元格
- GridView 合并单元格
- 合并GridView中的单元格!
- 合并 GridView 的单元格
- C# GridView单元格合并.
- gridview合并单元格
- gridview合并单元格
- gridview单元格的合并
- jpush 推送
- Android系统移植与调试之------->如何修改Android系统默认显示【开发者选项】并默认打开【USB调试】和【未知来源】开关
- EditPlus配置代码快速行注释和取消行注释
- [Unity热更新]unity5中的assetbundle
- SynchronizedMap和ConcurrentHashMap的深入分析
- GridView合并单元格
- Linux(RHEL)5.4/5.5/5.8/6.0/6.3 ISO镜像文件-下载地址
- SQL中count()/max() /min()/sum()avg()/sum()等函数用法
- iOS关于系统短信和电话的调用
- HelloWorld
- linux进程相关概念
- cocos-js实现背景图的滚动
- 静态库的封装
- Spring的方法注入lookup-method(转)