【问题标题】:C# Iterating through data and inserting elements at certain timespanC# 遍历数据并在特定时间跨度插入元素
【发布时间】:2017-11-05 10:39:01
【问题描述】:

我正在编写一个简单的任务调度应用程序。目前卡在某些 UI 上。我今天分配给用户的任务很少。从 10:00 AM 到 01:00 PM 和 02:00 PM 到 04:00 PM 分配的任务。

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

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

**我编辑了 DOM 以显示我所追求的,显示的示例时间。

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

}

基于以上,这是我目前拥有的。

第一个区块应该从 10:00 开始,到 1:00 PM 结束

所以,这些块应该是这样的。

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

任何指针都会有所帮助。

问候

【问题讨论】:

    标签: c# jquery html user-interface datetime


    【解决方案1】:

    您首先将所有任务添加到当天,然后用空槽填充其余的任务。 我的建议是重新考虑您发送到视图的模型,也许它应该已经包含空任务?或者如果这不可能将 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;
    }
    

    【讨论】:

    • 谢谢。该模型只分配了任务,所以我必须根据它找出空的。我尝试了一些事情,然后将我的 if 语句移到外面,感谢您的提示,将每小时迭代一次并检查开始时间以查看是否分配了任务。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-02
    • 2013-04-23
    相关资源
    最近更新 更多