标题打中间HTML,html – 在每个页面上打印标题Print.CSS

我有一个视图,它采用对象列表.

因此,例如,如果我有一个人员列表……按照他们所在的位置和他们所在的部门按顺序排列:

| ID | Name | Location | Division | Age |

--------------------------------------------------------------

1 John Building1 Finance 25

2 Alex Building1 Finance 30

3 Chris Building2 ISS 22

4 Justin Building1 Human Resources 41

5 Mary Building2 Accounting 43

6 Ian Building1 Human Resources 27

7 John Building1 Finance 35

所以我的动作return语句如下所示:

lstOfPersonnel = lstOfPersonnel.OrderBy(x => x.Location).ThenBy(x => x.Division).ThenBy(x => x.Name).ToList();

return View(lstOfPersonnel);

在我看来,我有这个:

@foreach (var item in Model)

{

if ((Model.IndexOf(item) == 0) || ((Model.IndexOf(item) != 0) && (!item.Building.Equals(Model.ElementAt(Model.IndexOf(item) - 1).Building) || !item.Division.Equals(Model.ElementAt(Model.IndexOf(item) - 1).Division))))

{

@item.Building@item.DivisionNameAge

@Html.DisplayFor(modelItem => item.Name)

@Html.DisplayFor(modelItem => item.Age)

}

else

{

@Html.DisplayFor(modelItem => item.Name)

@Html.DisplayFor(modelItem => item.Age)

}

}

现在,当我打印预览时,它会将同一建筑物和分区中的每个人放在各自的标题下.然而,第一个< thead> element ..让我们说这个例子是Building1和Finance,因为.OrderBy ….显示在下一个Building的顶部的每个页面上.

因此,对于视觉效果,这是我打印预览时的样子:

第1页:

// Perfect Render

Building1 | Finance

Name | Age

Alex 30

John 35

John 25

第2页:

// Repeat of Page 1's headers

Building1 | Finance

Name | Age

Building1 | Human Resources

Name | Age

Ian 27

Justin 41

第3页:

// Repeat of Page 1's headers

Building1 | Finance

Name | Age

Building2 | Accounting

Name | Age

Mary 43

第4页:

// Repeat of Page 1's headers

Building1 | Finance

Name | Age

Building2 | ISS

Name | Age

Chris 43

最佳答案

Multiple thead in a single table可能不可行.这就是说你必须为你想要创建的每个thead创建一个新表.

要在一个循环中完成此任务,看起来像这样:

var lastBuilding = null, lastDivision = null;

foreach(var item in Model) {

if(!item.Building.Equals(lastBuilding) || !item.Division.Equals(lastDivision)) {

if(lastBuilding != null && lastDivision != null) {

}

@item.Building@item.DivisionNameAge

}

@Html.DisplayFor(modelItem => item.Name)

@Html.DisplayFor(modelItem => item.Age)

lastBuilding = item.Building;

lastDivision = item.Division;

}

这里逻辑的关键是:

1. Each item ultimately equates to a row in a table so the item outputs each iteration. The rest is just checking for whether or not a new table should be started (and the last one ended).

2. Setting lastBuilding and lastDivision to null for the first iteration avoids the first table being ended immediately.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值