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

C# 从C中for循环的列表中获取数据,c#,html,css,list,C#,Html,Css,List,我正在尝试循环浏览一个列表,并为列表中的每个站点创建一个新表 我的控制器看起来像这样 List<string> OffReportColumns = new List<string>(7); List<List<string>> OffReportRows = new List<List<string>>(); foreach (Site s in sites)

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

我的控制器看起来像这样

 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>
        }

但这只会在列表上展开,而不会创建新的列表,正如您在评论中所述,有两列是静态数据,唯一的动态数据是站点可以简单地循环抛出站点并显示它们,如下所示

    @foreach (Site s in sites)
    {
        <tr style="color:black">
        <td>@Site</td>
        <td>Average Cost</td>
        <td>Average Cost with Labour</td>
        </tr>
    }

您还可以删除在控制器中向列表和viewbag添加列,因为它们不是必需的

如您在评论中所述,有两列是静态数据,唯一的动态数据是站点可以简单地循环抛出站点并如下所示显示它们

    @foreach (Site s in sites)
    {
        <tr style="color:black">
        <td>@Site</td>
        <td>Average Cost</td>
        <td>Average Cost with Labour</td>
        </tr>
    }

您还可以删除在控制器中向列表和viewbag添加列,因为它们不是必需的

我想您可以先实现几件事,我会尝试修改col-xs-3列的大小

如果这不起作用,请尝试在1 colspan=2中折叠两个join

最后,我将尝试类=vw-100 财产

我给你们一个简单的例子,这样你们就可以实现它,在完整的窗口中打开它来正确地看到它

引导示例 你好,世界! 调整浏览器窗口的大小以查看效果

当屏幕宽度小于768px时,这些列将自动堆叠在彼此的顶部

.col-sm-4 .col-sm-4 .col-sm-4 .col-sm-4 .col-sm-4 .col-sm-4 .col-sm-4 .col-sm-4 .col-sm-4 .col-sm-4 .col-sm-4 .col-sm-4 .col-sm-4 .col-sm-4 .col-sm-4 .col-sm-4
我想您可以先实现几件事,我会尝试修改col-xs-3的列大小

如果这不起作用,请尝试在1 colspan=2中折叠两个join

最后,我将尝试类=vw-100 财产

我给你们一个简单的例子,这样你们就可以实现它,在完整的窗口中打开它来正确地看到它

引导示例 你好,世界! 调整浏览器窗口的大小以查看效果

当屏幕宽度小于768px时,这些列将自动堆叠在彼此的顶部

.col-sm-4 .col-sm-4 .col-sm-4 .col-sm-4 .col-sm-4 .col-sm-4 .col-sm-4 .col-sm-4 .col-sm-4 .col-sm-4 .col-sm-4 .col-sm-4 .col-sm-4 .col-sm-4 .col-sm-4 .col-sm-4
在第一个代码段中,所有站点的所有列都添加到一个列表中。2维正在变成1维。如果没有循环,它将被有效地写为

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)
{
    <tr>
        <td>@s.Name</td>
        <td></td>
        <td></td>
        <td>Average Cost</td>
        <td></td>
        <td></td>
        <td>Average Cost With Labour</td>
    </tr>
}

这将为每个站点创建一行7列。每行的第一列将是站点的名称。

在第一个代码段中,所有站点的所有列都添加到一个列表中。2维正在变成1维。如果没有循环,它将被有效地写为

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)
{
    <tr>
        <td>@s.Name</td>
        <td></td>
        <td></td>
        <td>Average Cost</td>
        <td></td>
        <td></td>
        <td>Average Cost With Labour</td>
    </tr>
}

这将为每个站点创建一行7列。每行的第一列将是站点的名称。

有几种方法,告诉我们您实际尝试了什么,哪些不起作用,这样我们可以更好地帮助您。@đ它是静态的,但我的页面将包含更多显示的数据。为了简单起见,我把它删减了,并想知道如何处理剩下的桌子。有几种方法,告诉我们您实际尝试了什么,哪些不起作用,这样我们可以更好地帮助您。@đ它是静态的,但我的页面将包含更多显示的数据。为了简单起见,我把它删减了,同时也为了了解如何处理其余的表。不幸的是,我把代码简化了很多。我还加了很多。因为每一列下都会有另一个da
ta清单应与适当的现场相对应。这就是为什么我把它设置成了我现在的样子do@chris因此,您必须编辑您的问题以澄清iTunes。幸运的是,我将代码简化了很多。我还加了很多。因为在每一列下都会有另一个数据列表,与适当的站点相对应。这就是为什么我把它设置成了我现在的样子do@chris所以你必须编辑你的问题来澄清它