【问题标题】:How to connect full calendar v 1.5.3 with MS SQL Server using asp.net C#/VB如何使用 asp.net C#/VB 将完整日历 v 1.5.3 与 MS SQL Server 连接起来
【发布时间】:2012-03-01 20:42:17
【问题描述】:

我已经使用 asp.net webforms 和 vb.net 成功地将 FullCalendar v1.4.2 与 sql server 连接起来。我想更新到 v1.5.3,但原来的集成代码不再有效,我看不到如何修复它。

其次,我想帮助我添加拖放功能,以便在从 asp.net 拖放时更新数据库,但我不知道从哪里开始。

适用于 v 1.4.2 的代码如下:

<script type="text/javascript" language="javascript">
        $(document).ready(function () {
            $('#calendar').fullCalendar({
                header: {
                    left: 'prev, next today',
                    center: 'title',
                    right: 'month, basicWeek, basicDay'
                },
                events: "Calendar.asmx/EventList"
            });

        });
</script>
Imports System
Imports System.Data
Imports System.Web.Services
Imports System.Data.SqlClient
Imports System.Web.Services.Protocols
Imports System.ComponentModel
Imports System.Collections.Generic
Imports System.Web.UI.Page


<System.Web.Script.Services.ScriptService()> _
<System.Web.Services.WebService(Namespace:="http://tempuri.org/")> _
<System.Web.Services.WebServiceBinding(ConformsTo:=WsiProfiles.BasicProfile1_1)> _
<ToolboxItem(False)> _
Public Class Calendar
    Inherits System.Web.Services.WebService

    <WebMethod()> _
    Public Function EventList(ByVal startDate As String, ByVal endDate As String) As String
        ' List to hold events
        Dim events As List(Of CalendarDTO) = New List(Of CalendarDTO)()

        Dim WebConfigConnection As String = ConfigurationManager.ConnectionStrings("FresheyeTimeTrackerConnectionString").ConnectionString
        Dim query As String = "SELECT * FROM CORE_PROJECT"
        Dim conn As New SqlConnection(WebConfigConnection)
        Dim cmd As New SqlCommand(query, conn)
        Dim da As New SqlDataAdapter(cmd)
        Dim ds As New DataSet()
        da.Fill(ds)
        'If startDate > ToUnixTimespan(DateTime.Now) Then
        'GoTo x
        'End If
        Dim starting As DateTime = FromUnixTimespan(startDate)
        ' Loop through events to be added
        For i As Integer = 0 To ds.Tables(0).Rows.Count - 1
            If String.IsNullOrEmpty(ds.Tables(0).Rows(i)("ProjectDeliveryDate").ToString()) Then


            Else

                ' Create a new event and start to populate
                Dim value As CalendarDTO = New CalendarDTO()
                ' Date is required to be in a unix format
                value.StartDate = ToUnixTimespan(DateTime.Parse(ds.Tables(0).Rows(i)("ProjectAddedDate").ToString))
                value.id = ds.Tables(0).Rows(i)("ProjectID").ToString()
                value.title = ds.Tables(0).Rows(i)("ProjectTitle").ToString()
                value.EndDate = ToUnixTimespan(DateTime.Parse(ds.Tables(0).Rows(i)("ProjectDeliveryDate").ToString))
                events.Add(value)

            End If

        Next
        ' Serialize the return value so it can be decoded in java.

x:

        Dim js As New System.Web.Script.Serialization.JavaScriptSerializer
        Return js.Serialize(events)
    End Function

    Private Function ToUnixTimespan(ByVal d As DateTime) As Int64
        Dim time As New TimeSpan()
        time = d.ToUniversalTime().Subtract(New DateTime(1970, 1, 1, 0, 0, 0))

        Return CType(Math.Truncate(time.TotalSeconds), Int64)
    End Function

    Private Function FromUnixTimespan(ByVal s As String) As DateTime
        Dim time As DateTime = New DateTime(1970, 1, 1, 0, 0, 0)
        Return time.AddSeconds(s)
    End Function
End Class

【问题讨论】:

  • @Brian - 不是我,但我可以给出几个可能的原因: 散文中没有句子。代码格式化破坏了语法高亮。为 vb.net 特定问题标记了 c#。问题中包含一堆额外且不必要的代码。谢天谢地,我可以编辑修复大部分问题:)
  • 我放置了一个 c# 标签,因为我想要 C# 或 VB 语言的解决方案?

标签: asp.net vb.net ado.net fullcalendar


【解决方案1】:

我也在为此苦苦挣扎...看起来我们从类似的地方借用了代码...

在您上面的代码中,您似乎没有将 startDate 和 endDate 转换回开始和结束。你是在 FullCalendar.js 中这样做的吗?

基本上我和你的差不多,除了在返回事件之前我做了一个替换,以便发送回的字符串包含 start 和 end 而不是 startDate 和 EndDate。

我的代码在 Chrome 中似乎可以正常工作,但在 IE 中却不行。

至于更新 Db...我正在查看发布在...上的几个答案。

FullCalendar, how do I allow users to edit/delete events and remove them from the database?

【讨论】:

  • 我不知道如何修改FullCalendar.js的函数,将开始和结束更改为开始日期和结束日期。我刚刚下载了一个用于 v1.4 的示例代码,我使用该代码连接到数据库,它工作正常,但是当我将相同的代码用于 v1.5.3 时,它不起作用是 v1.5.3 在 chrome 上为你工作吗?你能给我那个代码吗?谢谢!
  • 好的,不确定你的代码是从哪里得到的,但我修改了 link 的代码。请注意,有一个替换 js.Serialize(events).Replace("StartDate", "start").Replace("EndDate", "end") 确保 json 提要具有 fullCalendar 的正确参数,这将是期待 start 和 end 而不是 startDate 和 endDate。接下来是 fullCalendar.js 的 mods。如果您从上述博客中获得该文件,那么它已从 A Shaw 的原始文件中修改。该博客提到了更改。您需要在 1.5.3 中进行类似操作
  • Continuing... 该博客提到了对 1.4.10 所做的两项更改,但对于 1.5.3,我只进行了一项更改 @line 43 和 44,将 startParam 更改为 startDate 并将 endParam 更改为 endDate。原因是在 VB 中 end 是一个保留字。将类型从 GET 设置为 POST 的第二个更改现在是 1.5.3 中的一个选项,因此您无需更改 js。只需在指定来源时将其作为选项之一包含,即 url:'yourwebservice.asmx',输入:'POST'
  • 如果你能在 IE 上使用它,请告诉我...就像我说的,我的版本适用于 Chrome,但不适用于 IE。此外,我还添加了更改月份视图的额外功能。我的日历用于显示加班索赔,我们的索赔基于每月 24 日。所以我的日历开始日期是下个月的 24 日到 23 日,即这个月的索赔从 2 月 24 日到 3 月 23 日。同时标题将显示“索赔月份:2012 年 3 月”而不是 2012 年 2 月。
猜你喜欢
  • 2017-07-13
  • 1970-01-01
  • 2019-05-08
  • 1970-01-01
  • 2015-10-26
  • 2016-10-08
  • 2017-01-29
  • 2013-11-01
  • 2011-02-21
相关资源
最近更新 更多