C#迭代数据并在特定时间跨度插入元素

时间:2017-11-05 10:39:02

标签: c# jquery html user-interface datetime

我正在编写一个简单的任务调度应用程序。目前停留在一些UI。我当天为用户分配的任务很少。任务分配时间为上午10:00至下午01:00和下午02:00至下午04:00。

我当前可以在div中显示该时间段内的所有任务以及可供新任务进入的时间段。

我想要实现的是,迭代完成任务并根据开始和结束时间附加块。

**我编辑了DOM以显示我的目标,显示采样时间。

The blocks should append at their respective start times and have empty blocks between them.

@helper Tasks(int _UserId, DateTime _CurrentDay)
{
//Get all Tasks assigned to the user for _CurrentDay
var _Tasks = Model.Tasks
    .Where(t => t.UserId == _UserId
     && Convert.ToDateTime(t.dtTaskEnd).Date == _CurrentDay.Date);

//Total assigned task hours
int _TotalTaskHrs = 0;

//Loop through all the tasks
foreach (var _Task in _Tasks)
{
    //Current Task Hours
    int _TaskHrs = (Convert.ToDateTime(_Task.dtTaskEnd).Hour - Convert.ToDateTime(_Task.dtTaskStart).Hour);

        <div class="job-task" data-hours="@_TaskHrs">

            <h2>@_Task.TaskName</h2>
            <p>@_Task.TaskCode</p>
            <div class="clearfix"></div>
            <p>@_Task.Notes</p>

            <!--edit btn-->
            <span class="job-task-edit" onclick="_ism.tasks.edit(@_Task.TaskId)">
                <i class="fa fa-edit"></i>
            </span>

        </div>

    _TotalTaskHrs += _TaskHrs;
}

//Unassigned Hours
int _EmptyHrs = 8 - _TotalTaskHrs;
if (_EmptyHrs > 0)
{
        <div class="job-task job-task-empty" data-hours="@_EmptyHrs">
            <!--Add btn-->
            <span class="job-task-edit" onclick="_ism.tasks.add(this,@_UserId)">
                <i class="fa fa-plus-square"></i>
            </span>
        </div>
}

}

基于以上所述,这就是我目前所拥有的。 This is what I currently have

第一个街区应该从10:00开始,并在下午1:00结束

所以,块应该看起来像。

[Empty 09:00 - 10:00] [TST2 10:00 - 01:00] [Empty 01:00 - 02:00] [TST124 02:00 - 04:00] [Empty 04:00 - 0500 ]

任何指针都会有所帮助。

此致

1 个答案:

答案 0 :(得分:0)

您首先将所有任务添加到当天,然后使用空插槽填充其余任务。 我的建议是重新考虑你发送给View的模型,也许它应该已经包含空任务?或者如果不可能将if语句移动到for-each中。伪代码:

int currentHour = 9
foreach (var task in tasks.OrderBy(t=>t.dtTaskStart))
{
  if (task.dsTaskStart > currentHour)
   //fill with empty slot

   //empty slot filled we can now fill the task slot

   currentHour = task.dtTaskEnd;
}