每7个活动重新创建一次桌子

时间:2014-03-21 19:40:27

标签: asp.net-mvc-4 razor fullcalendar

所以即时通讯使用jquery日历插件,我创建一个对我的组织更友好的打印视图。当用户点击星期视图并按下打印此视图的按钮时,下面的编码工作完美。但如果他们选择月份视图并按下打印按钮,则会整个月份水平打印。长话短说,我如何使这个日历每七个计数新线。

<table width="100%" style="border: none">
    <td style="border-style: none">
        <table style="border: none">
            @for (int index = 0; index < Model.Count - 1; index++)
            {
                var calendarDate = Model[index];
                <td style="vertical-align: top">

                    <div style="border: thin; border-style: solid; font-weight: bold">
                        @calendarDate.CalDate.ToLongDateString()
                    </div>

                    @foreach (var dayEvents in calendarDate.DateEvents)
                    {
                        <div style="border: thin; border-style: solid">
                            @dayEvents.Department<br />
                            @dayEvents.Doctor<br />
                            @dayEvents.Comments
                        </div>
                    }
                </td>
            }
        </table>
    </td>
</table>

我可能会有一个时刻,它正好在我眼前,但我伸出手。

2 个答案:

答案 0 :(得分:2)

您可以将模型项目分组为7个:

var model = Enumerable.Range(0, 20).Select(x => new { Text = "item " + x });
var data = model
        .Select((value, index) => new { Index = index / 3, Item = value })
        .GroupBy(pair => pair.Index);

然后你可以这样做:

<table>
@foreach (var group in data)
{
    <tr>
        @foreach (var element in group)
        {
            <td>@element.Item.Text</td>
        }
        @for (int i = 0; i < 3 - group.Count(); i++)
        {
            <td>empty</td> 
        }
    </tr>
}
</table>

请参阅此线程中的Darin Dimitrov的回答:Building tables with WebMatrix

答案 1 :(得分:1)

这种方法很有效,看起来很干净。无论是周视图还是月视图,它都有效。它与原始答案的方法非常相似。所以我也会给你信用

@{

int itemIndex = 0;
int colspan = 7;
}


<table class="printCalendarTable">
<tr style="vertical-align: top; font-weight: bold">
    @foreach (var item in Model)
    {
        if (itemIndex != 0 && itemIndex % colspan == 0)
        {
            @:</tr><tr style="vertical-align: top; font-weight: bold">
        }
        <td>@item.CalDate.ToShortDateString()
            <table>
                    @foreach (var ocEvent in item.DateEvents)
                    {
                        <tr><td>@ocEvent.Department</td></tr>
                        <tr><td>@ocEvent.Doctor</td></tr>
                        <tr><td>@ocEvent.Comments</td></tr>
                    }
            </table>
        </td>
        itemIndex++;
    }
</tr>
</table>