在ASP.NET中,我是动态地创建表,包括列和行。
<table>
<thead>
<tr>
<th scope="col">To location</th>
@foreach (String itemName in ViewBag.itemNames)
{
<th scope="col">@itemName</th>
}
</tr>
</thead>
<tbody>
@foreach (var transaction in Model)
{
<tr>
<td>@transaction.toLocation</td>
@foreach (var item in transaction.itemList)
{
<td>@item.quantity</td>
}
</tr>
}
</tbody>
</table>
在thead元素中,我得到一个列,其中包含项目发送到的位置,以及可以在事务中的每个项目的列。 tbody元素中使用的itemList与thead中的itemName列的名称相同,加上项目的数量。我正在寻找的是第二个foreach循环:
foreach(item in transaction.itemList)
{
@thead.findColumn(@item.itemName) // find the column name that's the same as the itemName
<td>@item.quantity</td> // place the data in that column
}
任何人都知道怎么做?
答案 0 :(得分:1)
您可以循环遍历每一行的所有列名称,并使用LINQ获取您正在寻找的项目:
<tbody>
@foreach (var transaction in Model)
{
<tr>
<td>@transaction.toLocation</td>
foreach(String itemName in ViewBag.itemNames)
{
<td>transaction.itemList.Where(x => x.itemName == itemName).Select(x => x.quantity).FirstOrDefault()</td>
}
</tr>
}
</tbody>
您可能需要在文件顶部包含此内容:
@using System.Data.Linq