C# 我想用另一种方式报告日期
从这张图片中可以看出,我有一个我没有报告时间的缺失日期列表,当我点击一个我错过的日期时,我的“Rappotera tid”会被填入该日期。 但我想做的是,我想删除我的“数据”,只基于日期之前的复选框,以便在以后的日期可以同时报告多个日期 但是我被卡住了,我想得到一些帮助 这是我的观点:C# 我想用另一种方式报告日期,c#,html,asp.net,asp.net-mvc-5,C#,Html,Asp.net,Asp.net Mvc 5,从这张图片中可以看出,我有一个我没有报告时间的缺失日期列表,当我点击一个我错过的日期时,我的“Rappotera tid”会被填入该日期。 但我想做的是,我想删除我的“数据”,只基于日期之前的复选框,以便在以后的日期可以同时报告多个日期 但是我被卡住了,我想得到一些帮助 这是我的观点: <script type="text/javascript" language="javascript"> $(function() { $(function() {
<script type="text/javascript" language="javascript">
$(function() {
$(function() {
$('#date').datepicker({
showButtonPanel: true,
changeMonth: true,
changeYear: true,
dateFormat: "yy-mm-dd",
firstDay: 1,
onSelect: function(dateText) {
$('#EndDate').datepicker('option', 'minDate', new Date(dateText));
}
});
});
});
function SetDate(dt) {
$('#date').val(dt);
}
var n = @(Model.Projects.Count);;
function AddProject() {
n++;
$.ajax({
type: "GET",
url: "@Url.Action("Project")/" + n,
dataType: "html",
success: function(data) {
$('#projects').append(data);
}
});
}
$(function() {
$('#startTime').change(function() { CalculateTime(); });
$('#endTime').change(function() { CalculateTime(); });
$('#breakTime').change(function() { CalculateTime(); });
CalculateTime();
});
function CalculateTime() {
try {
var startTime = $('#startTime').val();
var endTime = $('#endTime').val();
var breakTime = $('#breakTime').val();
var startDate = new Date(2000, 1, 1, startTime.substring(0, 2), startTime.substring(3, 5), 0, 0);
var endDate = new Date(2000, 1, 1, endTime.substring(0, 2), endTime.substring(3, 5), 0, 0);
var time = endDate - startDate;
time = time / 1000 / 60 / 60;
time = time - breakTime.substring(0, 2);
time = time - (breakTime.substring(3, 5) / 60);
$('#workedHours').html(time + " timmar");
} catch (err) {
$('#workedHours').html("---");
}
}
</script>
<div class="page-container">
<div class="page-content">
<div class="container">
<div class="row">
<div class="col-md-12">
@if (ViewData["posted"] != null)
{
<div class="alert alert-success">
<strong>Tidsrapporten tillagd.</strong>
</div>
}
<div class="tabbable tabbable-custom tabbable-noborder tabbable-reversed">
<div class="tab-content">
<div class="portlet light bordered">
<div class="portlet-title">
<div class="caption">
<span class="caption-subject font-green-sharp bold uppercase">missad rappoterad tid</span>
</div>
</div>
<form class="form-horizontal">
<div class="portlet-body form">
<div class="form-group">
@foreach (var date in ViewBag.MissingDays)
{
var isoDate = date.ToString("yy-MM-dd");
<div class="col-md-1">
<input type="checkbox" name="Date" value="Date">
<a href="javascript:SetDate('@isoDate');">@isoDate</a>
</div>
}
</div>
</div>
</form>
</div>
</div>
</div>
</div>
@Html.ValidationSummary()
@using (Html.BeginForm("TimeReport", "Reports", FormMethod.Post, new { enctype = "multipart/form-data", @class = "form-horizontal" }))
{
@Html.Hidden("ReportId", Model.ReportId)
<div class="col-md-6">
<div class="tabbable tabbable-custom tabbable-noborder tabbable-reversed">
<div class="tab-content">
<div class="portlet light bordered">
<div class="portlet-title">
<div class="caption">
<span class="caption-subject font-green-sharp bold uppercase">Rappotera tid</span>
</div>
</div>
<div class="portlet-body form">
<div class="form-group">
<label class="col-md-3 control-label">Datum:</label>
<div class="col-md-5">
@Html.TextBox("date", Model.Date.ToShortDateString(), new {@class = "form-control"})
</div>
</div>
<div class="form-group">
<label class="col-md-3 control-label">Start tid:</label>
<div class="col-md-5">
@Html.TextBox("startTime", Model.Times.StartTime, new { @class = "form-control timepicker timepicker-24" })
</div>
</div>
<div class="form-group">
<label class="col-md-3 control-label">Slut tid:</label>
<div class="col-md-5">
@Html.TextBox("endTime", Model.Times.EndTime, new { @class = "form-control timepicker timepicker-24" })
</div>
</div>
<div class="form-group">
<label class="col-md-3 control-label">Rast Längd:</label>
<div class="col-md-5">
@Html.TextBox("breakTime", Model.Times.BreakTime, new { @class = "form-control timepicker timepicker-24" })
</div>
</div>
<div class="form-group">
<label class="col-md-3 control-label">Tid jobbad:</label>
<div class="col-md-5">
@Html.TextBox("workedHours", Model.Times.WorkedHours, new { @class = "form-control timepicker timepicker-24" })
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="col-md-6">
<div id="projects">
@foreach (var data in Model.Projects)
{
Html.RenderPartial("Project", data, ViewData["vd"] as ViewDataDictionary);
var viewDataDictionary = ViewData["vd"] as ViewDataDictionary;
if (viewDataDictionary != null)
{
viewDataDictionary["id"] = (int)viewDataDictionary["id"] + 1;
}
}
</div>
</div>
<div class="form-actions">
<div class="col-md-offset-4 col-asdfasmd-9">
<a href="javascript:AddProject()" class="btn btn-primary">Lägg till projekt</a>
<button type="submit" class="btn btn-primary">Spara</button>
</div>
</div>
if (Model.ReportId.HasValue)
{
<input type="submit" value="Ta bort" name="delete" />
}
}
</div>
</div>
</div>
</div>
$(函数(){
$(函数(){
$(“#日期”).datepicker({
showButtonPanel:是的,
变化月:对,
变化年:是的,
日期格式:“年月日”,
第一天:1,
onSelect:函数(日期文本){
$('#EndDate')。日期选择器('option','minDate',新日期(dateText));
}
});
});
});
函数设置日期(dt){
$('日期').val(dt);
}
var n=@(Model.Projects.Count);;
函数AddProject(){
n++;
$.ajax({
键入:“获取”,
url:“@url.Action”(“项目”)/”+n,
数据类型:“html”,
成功:功能(数据){
$(“#项目”)。追加(数据);
}
});
}
$(函数(){
$('#startTime').change(function(){CalculateTime();});
$('#endTime').change(function(){CalculateTime();});
$('#breakTime').change(function(){CalculateTime();});
计算时间();
});
函数计算时间(){
试一试{
var startTime=$('#startTime').val();
var endTime=$('#endTime').val();
var breakTime=$('#breakTime').val();
var startDate=新日期(2000,1,1,startTime.substring(0,2),startTime.substring(3,5),0,0);
var endDate=新日期(2000,1,1,endTime.substring(0,2),endTime.substring(3,5),0,0);
var时间=结束日期-开始日期;
时间=时间/1000/60/60;
时间=时间-中断时间。子字符串(0,2);
时间=时间-(中断时间.子串(3,5)/60);
$('#workedHours').html(time+“timmar”);
}捕捉(错误){
$('#workedHours').html(“--”);
}
}
@如果(ViewData[“posted”]!=null)
{
Tidsrapporten TILAGD.
}
米萨德·拉波特拉德·蒂德
@foreach(视图包中的var日期。丢失天数)
{
var isoDate=日期至字符串(“yy-MM-dd”);
}
@Html.ValidationSummary()
@使用(Html.BeginForm(“TimeReport”、“Reports”、FormMethod.Post、new{enctype=“multipart/formdata”、@class=“form horizontal”}))
{
@Html.Hidden(“ReportId”,Model.ReportId)
雷波特拉tid
资料:
@Html.TextBox(“date”,Model.date.ToShortDateString(),new{@class=“form control”})
开始tid:
@TextBox(“startTime”,Model.Times.startTime,new{@class=“form control timepicker timepicker-24”})
荡妇工贸署:
@TextBox(“endTime”,Model.Times.endTime,new{@class=“form control timepicker timepicker-24”})
拉斯特·隆德:
@TextBox(“breakTime”,Model.Times.breakTime,new{@class=“form control timepicker timepicker-24”})
工业贸易署职位空缺:
@文本框(“工作小时
public ActionResult TimeReport(FormCollection form, Guid? id)
{
ViewDataDictionary vd = new ViewDataDictionary
{
["projects"] = new DatabaseLayer().GetConsultantProjects(Constants.CurrentUser(User.Identity.Name)),
["id"] = 1,
["showDescription"] = true
};
ViewData["vd"] = vd;
NewTimeReportModel projectData = new NewTimeReportModel();
if (form != null && form.AllKeys.Contains("delete"))
{
new DatabaseLayer().DeleteTimeReport(Guid.Parse(form["ReportId"]));
LoadDefaultSettings(projectData);
ViewData.Model = projectData;
return View();
}
if (id.HasValue && (form == null || form.AllKeys.Length == 0))
{
using (DatabaseLayer db = new DatabaseLayer())
{
var timeReport = db.GetTimeReport(id.Value);
projectData = new NewTimeReportModel(timeReport);
if (projectData.Projects.Count == 1)
projectData.Projects[0].Hours = null;
}
}
else if (form == null || form.AllKeys.Length == 0)
{
LoadDefaultSettings(projectData);
}
else
{
DateTime reportDate;
if (!DateTime.TryParse(form["date"], out reportDate))
ModelState.AddModelError("Date", "Felaktikt datum");
var projectNumbers = (from x in form.AllKeys
where x.Contains("_")
select x.Substring(x.IndexOf('_'))).Distinct();
projectData.Times = new TimeReportTimes(form["startTime"], form["endTime"], form["breakTime"], ModelState);
projectData.Date = reportDate;
if (!projectNumbers.Any())
ModelState.AddModelError("Projekt", "Inga projekt valda...");
else
{
int emptyHours = 0;
foreach (string projectNumber in projectNumbers)
{
projectData.Projects.Add(new NewTimeReportModel.Project
{
Description = form["description" + projectNumber],
Hours = null,
ProjectId = Guid.Parse(form["project" + projectNumber])
});
string hourString = form["hours" + projectNumber];
if (string.IsNullOrEmpty(hourString))
{
emptyHours++;
projectData.Projects[projectData.Projects.Count - 1].Hours = projectData.Times.WorkedHours;
}
else
{
if (!projectData.Projects[projectData.Projects.Count - 1].SetHours(hourString))
{
ModelState.AddModelError("hours_" + projectNumber, "Felaktig antal timmar");
}
}
}
if (emptyHours > 1 || (emptyHours == 0 && projectData.Projects.Sum(x => x.Hours) != projectData.Times.WorkedHours))
{
ModelState.AddModelError("hours_" + projectNumbers.First(), "Antalet timmar stämmer ej överrens");
}
if (projectData.Projects.Where(x => x.Hours <= 0).Any())
{
ModelState.AddModelError("hours_" + projectNumbers.First(), "Antalet timmar måste vara större än noll");
}
if (!string.IsNullOrEmpty(form["ReportId"]))
projectData.ReportId = Guid.Parse(form["ReportId"]);
if (ModelState.IsValid)
{
projectData.SaveToDatabase(Constants.CurrentUser(User.Identity.Name));
ViewData["posted"] = true;
projectData = new NewTimeReportModel();
LoadDefaultSettings(projectData);
}
else if (projectData.Projects.Count == 1)
projectData.Projects[0].Hours = null;
}
}
var missingdays = new DatabaseLayer().GetConsultantMissingDays(Constants.CurrentUser(User.Identity.Name));
if (missingdays.Count == 0)
{
ViewData["missingDays"] = "";
}
else
{
ViewBag.MissingDays = missingdays;
}
ViewData.Model = projectData;
return View();
}