用2轴创建网格

时间:2013-06-03 16:08:06

标签: asp.net-mvc-3 razor

我正在尝试创建一个网格,其中包含x轴上的事件和y轴上的需求,并且填充了解决方案。

        Event1        Event2
Req1    Sol1
Req2                  Sol2

我的模型包含一个事件列表,其中包含相关的需求,其中包含相关的解决方案。每个事件可以有0个或更多要求,每个要求可以有0个或更多解决方案。

如何在剃刀中准确显示此网格?

这是我的尝试:

<table border="1">
    <tr>
        <td class="span-6"></td>
        @foreach(var events in Model.Events)
        {
        <td colspan="3">
            @events.Name
        </td>
            requirementsList.AddRange(events.Requirements);
        }
    </tr>
    @foreach(var req in requirementsList)
    {   
        <tr>
            <td>
                @req.Name
            </td>
            <!--Insert logic to align solution with Event-->
            <td>
                @req.Solution
            </td>
        </tr>
    }
</table>

当然,这仅显示第一个事件列中的所有解决方案。

1 个答案:

答案 0 :(得分:0)

我在PHP中为我的时间表系统做了类似的事情,我希望每天为每位员工工作数小时(2个日期之间):

       | 1 May | 2 May | ... May
Fred   | 6     |
George |       |  4    |

我使用了3个foreach循环,首先我输出了日期,我去了每个员工,然后在员工循环中,我再次绕过日期。

所以对你来说就是:

<table border="1">
    <tr>
        <td class="span-6"></td>
        @foreach(var events in Model.Events)
        {
        <td colspan="3">
            @events.Name
        </td>
            requirementsList.AddRange(events.Requirements);
        }
    </tr>
    @foreach(var req in requirementsList)
    {   
        <tr>
            <td>
                @req.Name
            </td>
            @foreach(var events in Model.Events)
            {
                @curRec = events.Requirements
               @if (curRec.HasSolution) // If has a solution.
                // Very important so solutions can be aligned properly
               { // Output the solution
            <td>
                @curRec.Solution
            </td>
               } else { // Output a empty cell
                   <td></td>
               }
            }
        </tr>
    }
</table>