我有一个嵌套列表结构如下:
class Person {
public string Name;
public List<Person> Children;
public int RowSpan {
get
{ int childrenCount = 0;
/* go through children (if any) and update childrenCount */
return childrenCount == 0 ? 1 : childrenCount;
}
};
}
编辑:我的真实数据结构与父母/孩子无关。我只是选择了一个简单的数据结构,使问题易于理解。假设每个爷爷可以有任意数量的儿子。每个儿子可以有任意数量的孩子。没有两个爷爷可以共享同一个儿子。同样,儿子不能分享孩子。
Edit2:我没有为每个单元格获取 RowSpan 的问题。这很容易。问题是:如何在迭代和遍历数据结构时解析表格的 HTML 结构。
我填充此结构的示例如下:
Person grandpa1 = new Person { Name = "GrandPa1" };
Person grandpa2 = new Person { Name = "GrandPa2" };
Person son1 = new Person { Name = "Son 1" };
Person son2 = new Person { Name = "Son 2" };
Person grandkid1 = new Person { Name = "GrandKid1" };
Person grandkid2 = new Person { Name = "GrandKid2" };
Person grandkid3 = new Person { Name = "GrandKid3" };
grandpa1.Children = new List<Person> { son1, son2 };
son2.Children = new List<Person> { grandkid1, grandkid2, grandkid3 };
List<Person> family = new List<Person> { grandpa1, grandpa2 } ;
我试图family
在 HTML 表中表示结构,使用<td rowspan={number of offsprints}>
对于上述系列,输出如下所示:
.------------------.
| | |
| | son1 |
| |-------|-----------.
| | | grandkid1 |
| grandpa1 | |-----------.
| | | grandkid2 |
| | son2 |-----------.
| | | grandkid3 |
|----------|-------.-----------.
| grandpa2 |
.----------.
在上表中,有grandpa
一个rowspan
。有一个。4
son2
rowspan
3
等效的 HTML 将类似于:
table {
border-collapse: collapse;
}
td, th {
border: 1px solid black;
padding: 4px;
}
th
{
font-family: monospace;
background-color: #def;
padding: 0 2em;
}
<table>
<thead>
<tr>
<th>Grand Parents</th>
<th>Sons</th>
<th>Kids</th>
</tr>
</thead>
<tr>
<td rowspan="4"> grandpa1 </td>
<td> son1 </td>
</tr>
<tr>
<!-- no cell for grandpa1:in progress -->
<!-- no cell for son1: fulfilled -->
<td rowspan="3"> son2 </td>
<td> kid1 </td>
</tr>
<tr>
<!-- no cell for grandpa1: in progress -->
<!-- no cell for son2: in progress -->
<td> kid2 </td>
</tr>
<tr>
<!-- no cell for grandpa1: in progress -->
<!-- no cell for son2: in progress -->
<td> kid3</td>
</tr>
<tr>
<!-- no cell for grandpa1: fullfilled -->
<!-- no cell for son2: fullfilled -->
<td> grandpa2 </td>
</tr>
</table>
我正在努力编写一种生成上述 HTML 结构的算法。我尝试了多种方法:
1-我Queue<TagBuilder>
为家庭的每个级别生成一个并遍历最高级别和Enqueue
一个TD
具有较低级别的受抚养人数量的行跨度。然后我为其他级别生成了其他队列。最后,我的计划是DeQueue
一次从所有级别添加 TD 到一个新的TR
. 但这不起作用,因为son1
没有孩子,从第 3 级出列会获取son2
..
2-我尝试迭代祖父母级别并为每个祖父母附加一个TR,其中一个TD具有他的儿子/孙子的行跨度。然后遍历儿子级别并做同样的事情,同样在孙子级别。但是,整个表格的格式会不正确。
我可以在 Excel 中轻松生成结构,因为我能够在迭代第一级时引用单元格及其合并状态,并且可以从之前的行返回并附加新单元格。
有没有一种简单的方法可以从上面的数据结构中生成家庭结构表?