用ajax异步方式实现日期筛选文章功能
日历筛选文章的功能在SF系统中实现过。但新系统中基于缓存问题,无法利用传值到标签的方法实现,也不能像系统这样,直接传入扩展SQL语句查询方式,存在一点困难。而新系统中可用ajax异步方式实现,给大家分享下。
第一步、因为系统没有按日期范围筛选标签,我们需要复制一个,不要原来的 @model Article 改为 利用函数 获取数据集的方式(因为列表标签只能通过@Power.AjaxArticleList 标签形式进行异步查询,所以我们必需改为自定义标签形式)。
var articles = ArticleService.GetList(nodeIdentifier, SiteContext.Current.SiteId , OutputCount, IncludeChildNodes, false, Sort, false, m => m.PublishTime >= getdate && m.PublishTime <= getdate.AddDays(1) , false )?.ToList();
除了GetList方式还有很多方式,可以示情况使用
第二步、模板中,获取地址传参,加载日历JS脚本
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | function getQueryVariable(str) { var query = window.location.search.substring(1); var vars = query.split( "&" ); for ( var i=0;i<vars.length;i++) { var pair = vars[i].split( "=" ); if (pair[0] == str){ return pair[1]; } } return false ; } var getdate = getQueryVariable( 'getdate' ); var identifier = '@Model.Identifier' ; var iDate = new Date(); if (getdate != '' ){ iDate = new Date(getdate);} var year = iDate.getFullYear(); var yue = iDate.getMonth() + 1; $( "#calendar" ).flexoCalendar({ setYear: year, setMonth: yue, selectDate: getdate, setIdentifier: identifier}); |
第三步、日历脚本中加入ajax异步获取数据写法,执行成功输出到指定元素中
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | Calendar.prototype.refList = function (options,newdate){ $.ajaxPreventCSRF({ url: '/Ajax/AjaxPartial' , type: 'post' , async: true , data: { moduleName: "ContentManage" , partialViewName: "文章图文列表-时间范围" , parameters: "{outputCount:99,TitleLength:72,ContentLength:500,ImageWidth:432,DisplayDateTime:'yyyy.MM.dd',GetDate:'" + newdate + "',ShowDate:true,RefNode:true,NodeIdentifier:'" + options.setIdentifier + "'}" }, success: function (response) { $( "#datalist" ).html(response.html); $( "#pageSlide" ).hide(); $( "#loadmore" ).hide(); } }); return calendar; } |
这里我们要注意的是Ajax和AjaxPreventCSRF的区别,在于后者带有CSRF认证。async为是否异步方式,moduleName该标签所属空间。等问题
第四步、日历脚本中,当用户选择到某个日期的时候,需要修改触发执行这个获取数据的函数
1 2 | var seldate = $( ".flexoCalendar .selected" ).attr( "data-time" ); Calendar.prototype.refList(options,seldate); |
用户登录
还没有账号?
立即注册