我制作了一个WebForms页面,每个员工都可以在其中输入,当他们去度假时,然后向MS SQL数据库提交一个条目:
Name | StartDate | EndDate
varchar(250) | datetime | datetime
但是现在我完全陷入了如何正确格式化并将其提供给事件的问题,因此我可以在另一页上的日历上显示它。
我对这样的硬编码事件没有问题:
<body>
<form id="form1" runat="server">
<div>
<div id='calendar'></div>
</div>
</form>
<script>
$('#calendar').fullCalendar({
events: [
{
title: 'Curt',
start: '2017-06-16'
},
{
title: 'George',
start: '2017-06-05',
end: '2017-06-08'
},
{
title: 'Susan',
start: '2017-06-03',
end: '2017-06-09'
}
],
eventColor: 'royalblue'
});
</script>
我对 JSON 提要或 .ashx 处理程序都不太熟悉,但我希望我能够朝着正确的方向推动!
谢谢!
现在我猜它是这样的:
public string GetConnectionString()
{
return System.Configuration.ConfigurationManager.ConnectionStrings["calendarConnectionString"].ConnectionString;
}
protected void Page_Load(object sender, EventArgs e)
{
}
private void GetHolidaysFromDatabase(object sender, EventArgs e)
{
SqlConnection conn = new SqlConnection(GetConnectionString());
string sql = "SELECT * FROM EmployeeHoliday";
try
{
conn.Open();
SqlCommand cmd = new SqlCommand(sql, conn);
// ???
}
catch (System.Data.SqlClient.SqlException ex)
{
string msg = "Error: ";
msg += ex.Message;
throw new Exception(msg);
}
finally
{
conn.Close();
}
}
// ???
此时,在代码中,填充一个List<YourCustomEventClass>
。
然后,在您的 WebForms 代码中,您需要将该列表序列化为 JS 数组,如下所示:
<script>
$('#calendar').fullCalendar({
events: <%= DataAsJson %>,
eventColor: 'royalblue'
});
</script>
在 C# 代码隐藏中:
public string DataAsJson
{
get
{
var serializeObject = new JavaScriptSerializer() { MaxJsonLength = int.MaxValue }.Serialize(YourListHere);
return serializeObject;
}
}
另外,在不相关的说明上 - 使用 https://stackoverflow.com/a/278924/34092 而不是您的finally
块。