【问题标题】:Recreating table every 7 events每 7 个事件重新创建表
【发布时间】:2014-03-26 21:52:03
【问题描述】:

所以我使用 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>

我可能有片刻,它就在我眼前,但我伸出了手。

【问题讨论】:

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


    【解决方案1】:

    您可以将模型项分组为 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

    【讨论】:

    • 如果选择了周视图并且不需要分组,这块代码将如何应用?
    • 您可以根据是否选择周视图,在 if 语句中组合两组代码(您的和我的)。
    【解决方案2】:

    这是行之有效的方法,而且看起来很干净。无论是在周视图还是月视图中,它都有效。它与您在原始答案中的方法非常相似。所以我也要表扬你

    @{
    
    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>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-01
      • 1970-01-01
      • 2017-09-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多