Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何正确地为全日历插件创建过滤器?

我在我的一个ASP.NET MVC应用程序中有一个工作日历视图,我将我的数据通过控制器以json格式从我的数据库中导入到完整日历jquery中,用这个html和javascript代码创建日历。如何使用select #Term下拉列表创建过滤器?

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@{
    ViewBag.Title = "Calendar";
    Layout = "~/Views/Shared/_Layout.cshtml";
}

<div class="heading" style="width: 100%; float: left; margin-bottom: 15px;">
    <h2 style="float: left">Calendar</h2>
    <select id="Term" style="float: right; margin-top: 20px;">
        <option value="all">All</option>
        <option value="2021-2022">2021-2022</option>
        <option value="2022-2023">2022-2023</option>
        <option value="2023-2024">2023-2024</option>
    </select>
 
</div>

<div id="calender"></div>



<div id="myModal" class="modal fade" role="dialog">
    <div class="modal-dialog">
        <div class="modal-content">
            <div class="modal-header">
                <button type="button" class="close" data-dismiss="modal">&times;</button>
                <h4 class="modal-title"><span id="eventTitle"></span></h4>

            </div>
            <div class="modal-body">
                <p id="pDetails"></p>
            </div>
            <div class="modal-footer">
                <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
            </div>
        </div>
    </div>
</div>




<link href="//cdnjs.cloudflare.com/ajax/libs/fullcalendar/3.4.0/fullcalendar.min.css" rel="stylesheet" />
<link href="//cdnjs.cloudflare.com/ajax/libs/fullcalendar/3.4.0/fullcalendar.print.css" rel="stylesheet" media="print" />

@section Scripts{
    <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script>
    <script src="//cdnjs.cloudflare.com/ajax/libs/fullcalendar/3.4.0/fullcalendar.min.js"></script>

    <script>
            $(document).ready(function () {
                var events = [];
                $.ajax({
                    type: "GET",
                    url: "/home/GetEvents", 
                    success: function (data) {
                        $.each(data, function (i, v) {
                            events.push({
                                title: v.EventType,
                                description: v.School,
                                start: moment(v.Date),
                                end: v.End != null ? moment(v.Date) : null,
                                color: v.Color,
                                year: v.TermYear,
                                school: v.School
                            });
                        })

                        GenerateCalender(events);

                    },

                    error: function (error) {
                        alert('failed');
                    }
                })


                function GenerateCalender(events) {
                    $('#calender').fullCalendar('render');
                    $('#calender').fullCalendar({
                        contentHeight: 400,
                        defaultDate: new Date(),
                        timeFormat: 'h(:mm)a',
                        header: {
                            left: 'prev,next today',
                            center: 'title',
                            right: 'month,basicWeek,basicDay,agenda'
                        },
                        eventLimit: true,
                        eventColor: '#378006',
                        events: events,
                        eventClick: function (calEvent, jsEvent, view) {
                            $('#myModal #eventTitle').text(calEvent.title);
                            var $description = $('<div/>');
                            $description.append($('<p/>').html('<b>Start:</b>' + calEvent.start.format("DD-MMM-YYYY HH:mm a")));
                            if (calEvent.end != null) {
                                $description.append($('<p/>').html('<b>End:</b>' + calEvent.end.format("DD-MMM-YYYY HH:mm a")));
                            }
                            $description.append($('<p/>').html('<b>School:</b>' + calEvent.description));
                            $('#myModal #pDetails').empty().html($description);

                            $('#myModal').modal();
                        }
                    })



                }

            })
        </script>
    }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-09-21 10:54:11

根据您在评论中的请求,我将演示如何使用fullCalendar 5实现事件提要。

首先,下载事件并初始化日历没有多大意义。这会延迟日历的显示,也意味着fullCalendar无法在需要时请求新事件。您不应该简单地让服务器在开始时将所有可能的事件下载到它的数据库中--一旦您的日历存在了一段时间,并且您有了很多事件,它就可以减慢进程,获取许多可能永远不会被查看的历史事件。相反,您的服务器应该只提供fullCalendar当前显示的时间段内的事件。如果如我下面所示实现日历设置,fullCalendar可以向服务器提供这些日期供其使用。然后,如果用户更改视图以显示不同的时间段,则只有这样,日历才会向服务器发出另一个请求,以获取所需的事件。这通常更有效,因为只有在实际需要的情况下才会下载事件。

由于服务器似乎没有按照fullCalendar所需的格式提供JSON数据,所以需要使用文档中所示的事件作为一种功能方法,在文档中定义一个自定义回调,fullCalendar可以在需要获取事件时执行该回调。然后,该回调可以运行AJAX请求,从服务器获取事件并将它们传递回fullCalendar (通过提供的回调,如文档中的示例所示)。

像这样的东西应该对你有用:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
document.addEventListener('DOMContentLoaded', function() {
  var calendarEl = document.getElementById('calendar');
  var calendar = new FullCalendar.Calendar(calendarEl, {
    initialView: 'dayGridMonth',
    headerToolbar: {
      left: "prev,next today",
      center: "title",
      right: "dayGridMonth,timeGridWeek,timeGridDay,listMonth"
    },
    events: function(fetchInfo, successCallback, failureCallback) //function to run whenever the calendar needs events
    {
      $.ajax({
        type: "GET",
        url: "/home/GetEvents", 
        data: { start: fetchInfo.startStr, end: fetchInfo.endStr }, //pass the date range to the server, so it can return only what's needed, not the whole database
        success: function (data) {
          var events = [];
    
          $.each(data, function (i, v) {
            events.push({
              title: v.EventType,
              description: v.School,
              start: moment(v.Date).format("YYYY-MM-DD"),
              end: v.End != null ? moment(v.Date).format("YYYY-MM-DD") : null,
              color: v.Color,
              year: v.TermYear,
              school: v.School
            });
          });
    
          successCallback(events); //pass the events back to fullCalendar
        },
        error: function (error) {
          alert('fetching events failed');
          console.log(error);
          failureCallback(error);
        }
      });
    }
  });

  calendar.render();
});

相关文件:

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73746605

复制
相关文章
检查Python对象
编程环境中的对象很象现实世界中的对象。实际的对象有一定的形状、大小、重量和其它特征。实际的对象还能够对其环境进行响应、与其它对象交互或执行任务。计算机中的对象试图模拟我们身边现实世界中的对象,包括象文档、日程表和业务过程这样的抽象对象。 类似于实际的对象,几个计算机对象可能共享共同的特征,同时保持它们自己相对较小的变异特征。想一想您在书店中看到的书籍。书籍的每个物理副本都可能有污迹、几张破损的书页或唯一的标识号。尽管每本书都是唯一的对象,但都拥有相同标题的每本书都只是原始模板的实例,并保留了原始模板的大
张善友
2018/01/22
1.3K0
利用Python进行CSV文件编码检测
csv文件编码格式多种多样,批量处理时容易出现问题,今天偶然看到有人提问:如何处理PowerBI批量导入csv文件时,文件编码不一致的问题?因为我之前处理过单个csv文件编码检测的问题,初步认为是可以利用Python解决的,今天正好是周末,便研究了一下实现方法。目标是实现csv文件编码格式批量获取,并且按照编码格式在当前目录下创建子目录,最后将同一种编码格式的csv文件移动至对应的子目录下,最终效果如下图:
披头
2020/04/26
2.8K0
多重捕获时为什么子异常类必须在它们任何父类之前?
马克-to-win:  一个重要的技巧就是:catch多重异常时,子异常类必须在它们任何父类之前。马克-to-win:因为运用父类的catch语句将捕获该类型及其所有子类类型的异常。马克-to-win:这样,如果子类在父类后面,子类将永远不会到达。马克-to-win:你想写也不行,系统会报编译错误。
马克java社区
2021/04/07
3160
多重捕获时为什么子异常类必须在它们任何父类之前?
程序员必知之前端演进史
细细整理了过去接触过的那些前端技术,发现前端演进是段特别有意思的历史。人们总是在过去就做出未来需要的框架,而现在流行的是过去的过去发明过的。如,响应式设计不得不提到的一个缺点是:他只是将原本在模板层做的事,放到了样式(CSS)层来完成。 复杂度同力一样不会消失,也不会凭空产生,它总是从一个物体转移到另一个物体或一种形式转为另一种形式。 如果六、七年前的移动网络速度和今天一样快,那么直接上的技术就是响应式设计,APP、SPA就不会流行得这么快。尽管我们可以预见未来这些领域会变得更好,但
春哥大魔王
2018/04/17
6690
程序员必知之前端演进史
python 对传参进行参数检查的装饰器
首先,装饰器只会在函数定义时被调用一次。 有时候你去掉装饰器的功能,那么你只需要简单的返回被装饰函数即可。 下面的代码中,如果全局变量 debug 被设置成了False(当你使用-O或-OO参数的优化模式执行程序时), 那么就直接返回未修改过的函数本身:
用户5760343
2019/12/12
8790
LeetCode 5967. 检查是否所有 A 都在 B 之前
给你一个 仅 由字符 'a' 和 'b' 组成的字符串 s 。 如果字符串中 每个 ‘a’ 都出现在 每个 ‘b’ 之前,返回 true ;否则,返回 false 。
Michael阿明
2022/01/07
3230
面向对象学习之前的准备
右击我的电脑-->属性-->高级系统设置-->环境变量-->环境变量-->系统变量中path-->新建-->在新出来的一行加上刚才的路径 属性-》高级系统设置
玖柒的小窝
2021/12/17
3050
面向对象学习之前的准备
必知必会 - 使用kafka之前要掌握的知识
消息队列是分布式系统架构中不可或缺的基础组件,它主要负责服务间的消息通信和数据传输。市面上有很多的开源消息队列服务可以选择,除了kafka,还有Activemq,Rocketmq等。对于要选择哪一个服务需要根据的实际情况来定,今天主要介绍kafka。
上帝De助手
2019/09/17
5230
必知必会 - 使用kafka之前要掌握的知识
在Python中进行运行时类型检查
Python 是一门动态类型语言,没有编译器对变量类型正确性的检查与保证,这也意味着经常需要在运行时对变量的类型进行校验,尤其是在后端接口开发中,毕竟前端传入的数据往往是不可控的。
杜逸先
2023/05/12
7490
Python使用BoundedSemaphore对象进行线程同步
Semaphore对象维护着一个内部计数器,调用acquire()方法时该计数器减1,调用release()方法时该计数器加1,适用于需要控制特定资源的并发访问线程数量的场合。 调用acquire()方法时,如果计数器已经为0则阻塞当前线程,直到有其他线程调用了release()方法,所以计数器的值永远不会小于0。 Semaphore对象可以调用任意次release()方法,而BoundedSemaphore对象可以保证计数器的值不超过特定的值。 下面的代码使用BoundedSemaphore对象限制特定资
Python小屋屋主
2018/04/16
1.7K0
decode encode区别_python encode函数
字符串在Python内部的表示是unicode编码,因此,在做编码转换时,通常需要以unicode作为中间编码,即先将其他编码的字符串解码(decode)成unicode,再从unicode编码(encode)成另一种编码。
全栈程序员站长
2022/11/10
7800
redis | 对象编码种类
server.h/* Objects encoding. Some kind of objects like Strings and Hashes can be * internally represented in multiple ways. The 'encoding' field of the object * is set to one of this fields for this object. 对象编码种类*/ #define OBJ_ENCODING_RAW 0 /* Raw
heidsoft
2023/03/18
4360
redis | 对象编码种类
Python检查字符串重叠部分并进行拼接
问题描述:假设有两个字符,要求检查两个字符串的重叠部分并进行拼接。例如abcdefg和fghik拼接得到abcdefghik,1234和23456拼接得到123456,而1234和678无法拼接。 参考代码: def checkAndMerge(s1, s2): m = min(len(s1), len(s2)) for i in range(m, 0, -1): # 比较s1的最后i个字符是否与s2的前i个字符一样 if s1[-i:]==s2[:i]: return s1+s2[i:]
Python小屋屋主
2018/04/16
1.8K0
学习之前了解PYTHON
Python是一种计算机程序设计语言。是一种动态的、面向对象的脚本语言,最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越来越多被用于独立的、大型项目的开发。
好派笔记
2021/09/17
2700
iOS 检查指定日期是否在当前日期之前
iOS检查指定日期是否在当前日期之前, 直接上代码: - (BOOL)checkProductDate: (NSString *)tempDate { NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; [dateFormatter setDateFormat:@"yyyy-MM-dd"]; NSDate *date = [dateFormatter dateFromStrin
周希
2019/10/15
1.9K0
使用Python中的ImageAI进行对象检测
对象检测是一种属于计算机视觉领域的技术。它处理识别和跟踪图像和视频中存在的对象。物体检测具有多种应用,例如面部检测,车辆检测,行人计数,自动驾驶汽车,安全系统等。
拓端
2020/09/25
2.5K0
C++实现编码转换
https://github.com/gongluck/Code-snippet/tree/master/cpp/code%20conversion
gongluck
2020/03/25
4K0
Redis对象类型、对象编码及对应关系
1、 Redis数据库中保存的键值对,键总是一个字符串对象,而值可以是字符串对象、列表对象、哈希对象、集合对象、有序集合对象;
用户8639654
2021/08/23
6960
【前端】:JS 内置对象必知必会
根据 ECMAScript 标准,JavaScript 中只有一种数字类型:基于 IEEE 754 标准的双精度 64 位二进制格式的值(-(2^53 -1) 到 2^53 -1)。它并没有为整数给出一种特定的类型。除了能够表示浮点数外,还有一些带符号的值:+Infinity,-Infinity 和 NaN (非数值,Not-a-Number)。
WEBJ2EE
2020/02/26
8970
点击加载更多

相似问题

Python: Unicode-对象必须在散列之前进行编码

10

TypeError: Unicode-对象必须在检查前进行编码

10

Python TypeError: Unicode-对象必须在散列之前进行编码。

10

Unicode-对象必须在散列之前进行编码

239

Unicode-对象必须在散列Python 3.6 Vuforia之前进行编码

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文