在fullCalendar中显示数据库中的条目

时间:2017-06-15 14:12:00

标签: c# asp.net sql-server webforms fullcalendar

我已经创建了一个WebForms页面,每个员工在休假时都可以输入,然后将条目提交到MS SQL数据库:

Name         | StartDate | EndDate
varchar(250) | datetime  | datetime

但是现在我完全陷入了如何正确格式化并提供给事件,所以我能够在另一页的日历上显示它.. < / p>

我对像这样的硬编码事件没有任何问题:

<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-feeds或.ashx-handlers不太熟悉,但我希望我能够通过推动正确的方向来做到这一点!

谢谢!

现在我猜测它是这样的:&/ p>

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();
        }
    }

1 个答案:

答案 0 :(得分:1)

 //  ???

在您的代码中,填充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阻止。