2017-10-04 29 views
0

我想使我的剃刀代碼更dinamically。我在數據表(dr)中有100多列,也有100多行。如何循環訪問數據表,並在ASP.Net MVC剃刀視圖中動態創建表?

<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

您可以使用DataTableColumns財產。像這樣:

<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轉換爲控制器中的列表,並在View中使用它。

+0

謝謝你。做了我一直在尋找的東西。我認爲這應該被標記爲答案。乾杯 – AxleWack