如何实现GridView合并行列

yghuaa 2013-05-26 04:10:04
实现相同信息行就自动合并
...全文
178 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
喂大的程序员 2013-05-27
  • 打赏
  • 举报
回复
这个合并方法,控制的表格样式,而非数据内容,试验了,说错勿喷
yghuaa 2013-05-26
  • 打赏
  • 举报
回复
引用 1 楼 sp1234 的回复:
合并行或者列本身很简单
    //从grd的第rowIndex行colIndex列单元格以下count行合并
    public static void 合并行(this GridView grd, int rowIndex, int colIndex, int count)
    {
        grd.Rows[rowIndex].Cells[colIndex].RowSpan = count;
        for (var i = rowIndex + 1; i < rowIndex + count; i++)
            grd.Rows[i].Cells[colIndex].Visible = false;
    }
 
    //从grd的第rowIndex行colIndex列单元格向右count列合并
    public static void 合并列(this GridView grd, int rowIndex, int colIndex, int count)
    {
        grd.Rows[rowIndex].Cells[colIndex].ColumnSpan = count;
        for (var i = 1; i < count; i++)
            grd.Rows[rowIndex].Cells[colIndex + i].Visible = false;
    }
关键就是如何找到count那个值来判断应该合并多少行(count为1则不合并)。 比如说对于第j列,从i行开始查找,你可以写一个for循环,找到第一个与i行j列值不同的行,比如说第k行,这 k-i 值 就是count。
public static void MergeRows(GridView GridView1) { for (int rowIndex = GridView1.Rows.Count - 2; rowIndex >= 0;rowIndex-- ) { GridViewRow row=GridView1.Rows[rowIndex]; GridViewRow previousRow=GridView1.Rows[rowIndex+1]; for (int i = 0; i < row.Cells.Count;i++) { if(row.Cells[i].Text==previousRow.Cells[i].Text) { row.Cells[i].RowSpan = previousRow.Cells[i].RowSpan < 2 ? 2 : previousRow.Cells[i].RowSpan + 1; previousRow.Cells[i].Visible = false; } } } } protected void GridView1_PreRender(object sender, EventArgs e) { GridDecorator.MergeRows(GridView1); } 我查找了下资料,说这样调用下就能实现合并信息相同的行,但是我用了一下,没有效果
  • 打赏
  • 举报
回复
合并行或者列本身很简单
    //从grd的第rowIndex行colIndex列单元格以下count行合并
    public static void 合并行(this GridView grd, int rowIndex, int colIndex, int count)
    {
        grd.Rows[rowIndex].Cells[colIndex].RowSpan = count;
        for (var i = rowIndex + 1; i < rowIndex + count; i++)
            grd.Rows[i].Cells[colIndex].Visible = false;
    }
 
    //从grd的第rowIndex行colIndex列单元格向右count列合并
    public static void 合并列(this GridView grd, int rowIndex, int colIndex, int count)
    {
        grd.Rows[rowIndex].Cells[colIndex].ColumnSpan = count;
        for (var i = 1; i < count; i++)
            grd.Rows[rowIndex].Cells[colIndex + i].Visible = false;
    }
关键就是如何找到count那个值来判断应该合并多少行(count为1则不合并)。 比如说对于第j列,从i行开始查找,你可以写一个for循环,找到第一个与i行j列值不同的行,比如说第k行,这 k-i 值 就是count。

62,071

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧