C# Daypilot-从SQL Server加载约会
我正在使用Daypilot创建一个主rota 我目前正在数据库中存储约会,但我想检索某一天的所有约会,并将其显示在日历上,与日期无关 所有在周一创建的约会都应该在周一显示,与日期无关 当前选择C# Daypilot-从SQL Server加载约会,c#,sql-server,calendar,daypilot,C#,Sql Server,Calendar,Daypilot,我正在使用Daypilot创建一个主rota 我目前正在数据库中存储约会,但我想检索某一天的所有约会,并将其显示在日历上,与日期无关 所有在周一创建的约会都应该在周一显示,与日期无关 当前选择 public DataTable GetAssignmentsForLocation(DayPilotCalendar calendar) { DataTable dt = new DataTable(); var da = CreateDataAdapter("select * fro
public DataTable GetAssignmentsForLocation(DayPilotCalendar calendar)
{
DataTable dt = new DataTable();
var da = CreateDataAdapter("select * from [master_rota] where [LocationId] = @location and Week = @Week");
AddParameterWithValue(da.SelectCommand, "location", (int)calendar.ClientState["location"]);
AddParameterWithValue(da.SelectCommand, "week", (int)calendar.ClientState["week"]);
da.Fill(dt);
return dt;
}
及
创作
public void CreateAssignment(DateTime start, DateTime end, int location, int week, int person, string note, DayOfWeek day)
{
using (DbConnection con = CreateConnection())
{
con.Open();
// string id = "";
var cmd = CreateCommand("insert into [master_rota] ([AssignmentStart], [AssignmentEnd], [LocationId], [PersonId], [AssignmentNote], week, day) values (@start, @end, @location, @person, @note, @Week, @day)", con);
AddParameterWithValue(cmd, "start", start);
AddParameterWithValue(cmd, "end", end);
AddParameterWithValue(cmd, "location", location);
AddParameterWithValue(cmd, "week", week);
AddParameterWithValue(cmd, "person", person);
AddParameterWithValue(cmd, "note", note);
AddParameterWithValue(cmd, "day", day);
cmd.ExecuteScalar();
}
}
数据库条目:数据库正在记录每个条目的日期,因此理论上可以加载给定日期值的所有值
例如,“第一天”的所有条目都应在周一显示,与日期无关
日历如下所示。如您所见,没有显示日期,因为如果日期匹配,它应该始终加载约会
请有人帮我建立select语句,以便将约会正确载入日历?例如,第一天到星期一的约会,第二天到星期二的约会等等……您必须在参数绑定中添加
@
:
AddParameterWithValue(da.SelectCommand, "@location", (int)calendar.ClientState["location"]);
AddParameterWithValue(da.SelectCommand, "@week", (int)calendar.ClientState["week"]);
您必须在参数绑定中添加
@
:
AddParameterWithValue(da.SelectCommand, "@location", (int)calendar.ClientState["location"]);
AddParameterWithValue(da.SelectCommand, "@week", (int)calendar.ClientState["week"]);
如果仅显示此周数据(且仅显示周视图),则可以使用以下方法: 加载约会时,使用“日期”字段计算自定义开始和结束日期,并覆盖原始值。在SQL中很难做到这一点,但您可以修改GetAssignmentsForLocation()以轻松地对数据集进行后期处理:
public DataTable GetAssignmentsForLocation(DayPilotCalendar calendar)
{
DataTable dt = new DataTable();
var da = CreateDataAdapter("select * from [master_rota] where [LocationId] = @location and Week = @Week");
AddParameterWithValue(da.SelectCommand, "@location", (int)calendar.ClientState["location"]);
AddParameterWithValue(da.SelectCommand, "@week", (int)calendar.ClientState["week"]);
da.Fill(dt);
foreach (DataRow dr in dt.Rows) {
int dayOfWeek = (int) dr["Day"];
DateTime start = (DateTime) dr["AssignmentStart"];
DateTime end = (DateTime) dr["AssignmentEnd"];
TimeSpan duration = end - start;
TimeSpan startTime = start.TimeOfDay;
dr["AssignmentStart"] = calendar.VisibleStart.AddDays(dayOfWeek).AddTime(startTime);
dr["AssignmentEnd"] = calendar.VisibleStart.AddDays(dayOfWeek).AddTime(startTime).AddTime(duration);
}
return dt;
}
请注意,这仅适用于星期天,因为星期天是一周的第一天(即calendar.VisibleStart始终是星期天)。如果您显示的唯一数据是此每周数据(且唯一视图是周视图),则可以使用以下方法: 加载约会时,使用“日期”字段计算自定义开始和结束日期,并覆盖原始值。在SQL中很难做到这一点,但您可以修改GetAssignmentsForLocation()以轻松地对数据集进行后期处理:
public DataTable GetAssignmentsForLocation(DayPilotCalendar calendar)
{
DataTable dt = new DataTable();
var da = CreateDataAdapter("select * from [master_rota] where [LocationId] = @location and Week = @Week");
AddParameterWithValue(da.SelectCommand, "@location", (int)calendar.ClientState["location"]);
AddParameterWithValue(da.SelectCommand, "@week", (int)calendar.ClientState["week"]);
da.Fill(dt);
foreach (DataRow dr in dt.Rows) {
int dayOfWeek = (int) dr["Day"];
DateTime start = (DateTime) dr["AssignmentStart"];
DateTime end = (DateTime) dr["AssignmentEnd"];
TimeSpan duration = end - start;
TimeSpan startTime = start.TimeOfDay;
dr["AssignmentStart"] = calendar.VisibleStart.AddDays(dayOfWeek).AddTime(startTime);
dr["AssignmentEnd"] = calendar.VisibleStart.AddDays(dayOfWeek).AddTime(startTime).AddTime(duration);
}
return dt;
}
请注意,这只适用于星期天作为一周的第一天(即calendar.VisibleStart始终是星期天)。此外,我修改了创建,以便它可以通过将星期六作为开始日来工作,因此它不必从星期天开始。显然,你可以改变它,使任何一天都可以成为“开始的一天”
另外,我修改了create,这样就可以将周六作为开始日,而不必在周日开始。显然,你可以改变它,使任何一天都可以成为“开始的一天”
您还没有向我们显示填充日历的代码吗?你只是在填充一个数据表现在添加了它这只是插入,你用来将数据表分配给日历的代码是什么?酷,最后一件事,
GetAssignmentsForLocation
中的代码是什么?已经发布了,这是帖子顶部的第一位代码你还没有向我们展示填充日历的代码吗?你只是在填充一个数据表现在添加了它这只是插入,你用来将数据表分配给日历的代码是什么?酷,最后一件事,GetAssignmentsForLocation
中的代码是什么?已经发布了,这是postGood拾取顶部的第一位代码,我还想补充一点,使用spoc在位置和周上的索引将更加高效,谢谢,这对这一部分有所帮助,但这并不能解决我最初请求的问题,我还想补充一点,使用spoc在位置和周上的索引将更加高效,谢谢,这对这一部分有所帮助,但它并没有解决我最初提出的问题,这很有效。非常感谢,你不知道这对我们的组织有多大帮助。再次感谢。太棒了,这很有效。非常感谢,你不知道这对我们的组织有多大帮助。再次感谢。