如何在ASP.Net MVC razor视图中循环遍历datatable并动态创建表?

时间:2017-10-04 13:06:16

标签: html asp.net-mvc razor

我想让我的剃刀代码更加动态。我有超过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部分中的所有参数。

1 个答案:

答案 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中使用它。