标题打中间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.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值