我想让我的剃刀代码更加动态。我有超过100列,数据表(dr)中也有超过100行。
<table id="PS3" class="report">
<tr id="Parameter_name">
<td id="stick_no" bgcolor='#F0F0F0'>Stick No</td>
<td id="pos" bgcolor='#F0F0F0'>Pos</td>
<td id="id" bgcolor='#F0F0F0'>ID</td>
<td id="type" bgcolor='#F0F0F0'>Type</td>
<td id="packing_datetime" bgcolor='#F0F0F0'>Packing DateTime</td>
</tr>
@if (ViewData["AllEmpData"] != null)
{
foreach (System.Data.DataRow dr in (ViewData["AllEmpData"] as System.Data.DataTable).Rows)
{
<tr>
<td>
@dr["stick_no"]
</td>
<td align="left">
@dr["pos"]
</td>
<td>
@dr["id"]
</td>
<td align="left">
@dr["type"]
</td>
<td>
@dr["packing_datetime"]
</td>
</tr>
}
}
</table>
我想在foreach周期中做这样的事情:
for(i=0; i< column_number; i++){
<td>
@dr[column_id[0].toString()]
</td>
}
其中column_number是id =“Parameter_name”行中的列数。 所以通常我不想写下foreach部分中的所有参数。
答案 0 :(得分:1)
您可以使用Columns
的{{1}}属性。像这样:
DataTable
您也可以通过这种方式创建表头。但您应该考虑将<table id="PS3" class="report">
<tr id="Parameter_name">
<td id="stick_no" bgcolor='#F0F0F0'>Stick No</td>
<td id="pos" bgcolor='#F0F0F0'>Pos</td>
<td id="id" bgcolor='#F0F0F0'>ID</td>
<td id="type" bgcolor='#F0F0F0'>Type</td>
<td id="packing_datetime" bgcolor='#F0F0F0'>Packing DateTime</td>
</tr>
@if (ViewData["AllEmpData"] != null)
{
var dt = ViewData["AllEmpData"] as System.Data.DataTable;
foreach (System.Data.DataRow dr in dt.Rows)
{
<tr>
@foreach (System.Data.DataColumn col in dt.Columns)
{
<td>@dr[col.ColumnName].ToString()</td>
}
</tr>
}
}
</table>
转换为控制器中的列表,并在DataTable
中使用它。