【问题标题】:Fullcalendar External Drop set id dropped item (ASP.NET MVC)Fullcalendar External Drop set id drop item (ASP.NET MVC)
【发布时间】:2018-09-07 12:54:01
【问题描述】:

我正在使用 ASP.NET MVC 解决方案。我的问题是,当我将外部项目放入日历时,我想设置从我放置新记录的数据库中获取的 id。所以我所做的是在 fullcalendar 的 drop 事件中,传递记录拖动的数据,然后在服务器端,用控制器将信息插入数据库,然后用 json 将要更新的 id 传递给成功方法掉落的物品。我有很多。我找到了创建新事件的解决方案(我不会这样做),以及其他不起作用的解决方案。这是我的代码:

JQUERY

    drop: function (date, jsEvent) {

        var currentRow = $(this);

        var Customer = currentRow.find("td:eq(0)").text();
        var Sign = currentRow.find("td:eq(1)").text();
        var Qta = currentRow.find("td:eq(2)").text();

        var rowdata = {
            'StartDate': date.format(),
            'Customer': Customer,
            'Sign': Sign,
            'Qta': Qta
        }

        $.ajax({
            type: 'post',
            data: rowdata,
            async: false,
            url: "/Home/SaveEventDrop",
            dataType: 'json',
            success: function (response) {
                 NewID = response.id;
            },
            failure: function (response) {
                alert(response.responseText);
            },
            error: function (response) {
                alert(response.responseText);
            }
        });

        $(this).remove();
        // HERE IS WHAT I WANT TO DO
        this.id = NewID;


    }

控制器

public ActionResult SaveEventDrop(string StartDate, string Customer, string Sign, string Qta)
    {
        SchedulerCalendar record = new SchedulerCalendar();

        //Formating the data
        Customer = Customer.Replace(System.Environment.NewLine, "").Trim();
        Sign = Sign.Replace(System.Environment.NewLine, "").Trim();
        Qta = Qta.Replace(System.Environment.NewLine, "").Trim();
        float FloatQta = float.Parse(Qta, CultureInfo.InvariantCulture.NumberFormat);

        record.customer = Customer;
        record.sign = Sign;
        record.qta = FloatQta;

        record.startDate = DateTime.Parse(StartDate);
        record.endDate = DateTime.Parse(StartDate);

        db.schedulerCalendars.Add(record);
        db.SaveChanges();


        return Json(record);
    }

所以如果有人可以让我了解如何在drop函数中获取drop的元素,以及如何更新id,我会非常感谢他!!!

谢谢

【问题讨论】:

  • this.id = NewID;可能在分配 NewID 之前设置。您是否检查过在成功调用 ajax 时分配的 NewID? ajax 是否按预期返回 ID?
  • 我已经调试过了,ajax 正确返回了 ID,但是我不能把它放在日历的元素上。
  • 我觉得问题是新掉的元素不是“this”,但是不知道是什么,怎么拿去改。
  • 尝试改变这个 -> 成功:function (response) { NewID = response.id; }, 成功:函数(响应){ drop.NewID = response.id;}
  • 我试过了,但是 javascript 中的异常说“删除它没有定义”

标签: javascript jquery ajax asp.net-mvc fullcalendar


【解决方案1】:

我为我的 iusse 找到了一个可行的解决方案,希望对其他人有所帮助。从共享代码开始,我将json返回的ID保存到“localStorage”变量中,所以我的AJAX成功函数将是:

    success: function (response) {
        localStorage.setItem("NewID", response.id);
    },

在此之后,我发现在放置后触发了“eventRecived”函数。这里有被丢弃物品的元素,我在这里设置了新的 ID:

    eventReceive: function (event) {
        event.id = localStorage.getItem("NewID");
    },

如果有人有更好的解决方案,我将不胜感激。现在这个解决方案对我有用。

【讨论】:

    【解决方案2】:

    对于其他可能遇到问题的人。如果您负担得起再次调用服务器的费用,则可以再次重新加载所有事件。我知道,不理想,但也许更简单。

    success: function (response) {
                calendar.removeAllEvents();
                calendar.refetchEvents();
        },
    

    【讨论】:

      【解决方案3】:

      我搜索了一下,找到了一个简单的解决方案。这不漂亮,但它有效。鉴于您添加的事件应该是唯一没有 id 的事件... 我将事件保存在数据库中,并在 POST 的响应中取回 id。然后我在发帖成功时将id添加到日历中拖到的事件中。

      这里是:

          eventReceive:function(info){
            start = moment(info.event.start).format("Y-MM-DD HH:mm:ss");
            end = moment(info.event.start).add(60,'m').format("Y-MM-DD HH:mm:ss");
            //console.log(start, end);
      
            $.ajax({
              url: SITEURL + '/testcalajax',
              data: {
                title: info.event.title,
                start: start,
                end: end,
                id: info.event.id,
                allDay :Number(info.event.allDay),
                type: 'receive'
              },
              type: "POST",
              success: function (response) {
                var NewEvent = calendar.getEventById( "" );
                NewEvent.setProp('id',response.id);
                
                  
              }
            });
          }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-04-20
        • 2011-04-15
        • 1970-01-01
        • 2012-03-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-22
        相关资源
        最近更新 更多