猿问

在 C# 的 for 循环中从列表中获取数据

我正在尝试循环浏览列表并为列表中的每个站点创建一个新表


我的控制器看起来像这样


 List<string> OffReportColumns = new List<string>(7);     

 List<List<string>> OffReportRows = new List<List<string>>();   

            foreach (Site s in sites)

            {                           

                OffReportColumns.Add(s.Name);

                OffReportColumns.Add("");

                OffReportColumns.Add("");

                OffReportColumns.Add("Average Cost");

                OffReportColumns.Add("");

                OffReportColumns.Add("");

                OffReportColumns.Add("Average Cost With Labour");


   OffReportRows.Add(new List<string>

                {

                    "Parts",

                    "",

                    "",

                    osiPartCost[s.ID].ToString("C2"),

                    "",

                    "",

                    osiPartCost[s.ID].ToString("C2")

                });

            }

我的视图看起来像这样


@foreach (Site s in sites)

        {

            <tr style="color:black">

                @foreach (var col in ViewBag.OffReportColumns)

                {

                    <th>@col </th>

                }            

            </tr>

            <tr style="color:black">

                   @foreach (var cell in ViewBag.OffReportRows)

                   {

                       <td>@cell</td>

                   }

            </tr>

        }

目前,这使得页面看起来像

但我希望它的布局看起来像这样

"Eric Car Stock "             "Average Cost"     "Average Cost with Labour"

"In-House Use "               "Average Cost"     "Average Cost with Labour"

"Havey Kuhar's Car Stock "    "Average Cost"     "Average Cost with Labour"

每个表下面都有与其站点相对应的数据

我如何更改我的代码来实现此目的?


喵喵时光机
浏览 98回答 3
3回答

森栏

在第一个代码片段中,所有站点的所有列都添加到一个列表中。二维正在变成一维。如果没有循环,它实际上可以写成OffReportColumns.Add("Eric Car Stock ");OffReportColumns.Add("");OffReportColumns.Add("");OffReportColumns.Add("Average Cost");OffReportColumns.Add("");OffReportColumns.Add("");OffReportColumns.Add("Average Cost With Labour");OffReportColumns.Add("In-House Use ");OffReportColumns.Add("");OffReportColumns.Add("");OffReportColumns.Add("Average Cost");OffReportColumns.Add("");OffReportColumns.Add("");OffReportColumns.Add("Average Cost With Labour");OffReportColumns.Add("Havey Kuhar's Car Stock ");OffReportColumns.Add("");OffReportColumns.Add("");OffReportColumns.Add("Average Cost");OffReportColumns.Add("");OffReportColumns.Add("");OffReportColumns.Add("Average Cost With Labour");第二个代码片段表示:“对于每个站点(其中有 3 个),创建一个表行。在每行中,对于每个 OffReportColumns(其中有 21 个),创建一个表列,其中包含来自内部循环的文本。这就是为什么来自所有站点的所有列都出现在 3 行的每一行上的原因。OffReportColumns更好的方法是根本没有该列表。相反,视图可以这样写@foreach (Site s in sites){&nbsp; &nbsp; <tr>&nbsp; &nbsp; &nbsp; &nbsp; <td>@s.Name</td>&nbsp; &nbsp; &nbsp; &nbsp; <td></td>&nbsp; &nbsp; &nbsp; &nbsp; <td></td>&nbsp; &nbsp; &nbsp; &nbsp; <td>Average Cost</td>&nbsp; &nbsp; &nbsp; &nbsp; <td></td>&nbsp; &nbsp; &nbsp; &nbsp; <td></td>&nbsp; &nbsp; &nbsp; &nbsp; <td>Average Cost With Labour</td>&nbsp; &nbsp; </tr>}这将为每个站点创建一行 7 列。每行的第一列将是站点的名称。

当年话下

正如您在评论中所述,有两列是静态数据,唯一的动态数据是网站可以简单地循环抛出网站并显示它们,如下所示&nbsp; &nbsp; @foreach (Site s in sites)&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; <tr style="color:black">&nbsp; &nbsp; &nbsp; &nbsp; <td>@Site</td>&nbsp; &nbsp; &nbsp; &nbsp; <td>Average Cost</td>&nbsp; &nbsp; &nbsp; &nbsp; <td>Average Cost with Labour</td>&nbsp; &nbsp; &nbsp; &nbsp; </tr>&nbsp; &nbsp; }您还可以删除添加列到控制器中的列表和视图包,因为它们不是必需的。

米琪卡哇伊

我给你一个简单的例子,这样你就可以实现它,在全窗口中打开它以正确查看它正如您在评论中所述,有两列是静态数据,唯一的动态数据是网站可以简单地循环抛出网站并显示它们,如下所示    @foreach (Site s in sites)    {        <tr style="color:black">        <td>@Site</td>        <td>Average Cost</td>        <td>Average Cost with Labour</td>        </tr>    }您还可以删除添加列到控制器中的列表和视图包,因为它们不是必需的。
随时随地看视频慕课网APP

相关分类

Html5
我要回答