You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#代码后置中实现HTML表格空单元格rowspan跨行合并的方法

实现逻辑

要实现第二列空单元格与上一行合并,核心逻辑是由上方非空的第二列单元格承担跨行属性,空值对应的行直接省略第二列单元格,同时累计跨行计数,可兼容连续多行空值的场景。

修改后代码

HtmlTable table_checklist = ((HtmlTable)tbl_checklist);
// 记录上一个非空的第二列单元格,以及累计跨行数
HtmlTableCell lastSubjectCell = null;
int rowSpanCount = 1;

if (dr2.HasRows)
{   
    while (dr2.Read())
    {
        HtmlTableRow row = new HtmlTableRow();
        HtmlTableCell cell1 = new HtmlTableCell();
        HtmlTableCell cell2 = new HtmlTableCell();
        HtmlTableCell cell3 = new HtmlTableCell();
         
        cell1.InnerText = dr2["role_id"].ToString();
        row.Cells.Add(cell1);

        string currentSubject = dr2["subject"].ToString();
        cell2.InnerText = currentSubject;

        if (string.IsNullOrEmpty(currentSubject))
        {
            // 当前第二列为空,累计跨行数,当前行不添加第二列单元格
            rowSpanCount++;
        }
        else
        {
            // 给上一个非空单元格设置累计的跨行值
            if (lastSubjectCell != null)
            {
                lastSubjectCell.RowSpan = rowSpanCount;
            }
            // 重置计数,更新上一个非空单元格引用
            rowSpanCount = 1;
            lastSubjectCell = cell2;
            row.Cells.Add(cell2);
        }

        cell3.InnerText = dr2["student"].ToString();
        row.Cells.Add(cell3);

        table_checklist.Rows.Add(row);
    }
    // 处理最后一组连续跨行场景
    if (lastSubjectCell != null)
    {
        lastSubjectCell.RowSpan = rowSpanCount;
    }
}

注意事项

  • 如果表格存在表头行,计数逻辑从第一行数据行开始即可,不要将表头计入跨行统计。
  • 代码可自动兼容连续多行第二列为空的场景,不需要手动固定跨行数值为2。

内容的提问来源于stack exchange,提问作者user2431727

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 23:15:02