博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Easyui DataGrid DateRange Filter 漂亮实用的日期区间段筛选功能
阅读量:7224 次
发布时间:2019-06-29

本文共 5540 字,大约阅读时间需要 18 分钟。

 

自定义扩展Jquery easyui datagrid filter组件实现对日期类型区间段的筛选功能。显示效果如一下

是不是非常实用

引用的jquery 组件是 Date Range Picker /

 

自定义扩展easyui datagird filter,参考代码如一下

 

 

$.extend($.fn.datagrid.defaults.filters, {    dateRange: {        init: function (container, options) {            var cc = $('').appendTo(container);            var input = $('').appendTo(cc);            var myoptions = {                applyClass: 'btn-sm btn-success',                cancelClass: 'btn-sm btn-default',                locale: {                    applyLabel: '确认',                    cancelLabel: '清空',                    fromLabel: '起始时间',                    toLabel: '结束时间',                    customRangeLabel: '自定义',                    firstDay: 1,                    daysOfWeek: ['日', '一', '二', '三', '四', '五', '六'],                    monthNames: ['一月', '二月', '三月', '四月', '五月', '六月',                        '七月', '八月', '九月', '十月', '十一月', '十二月'],                  },                ranges: {                                        //'最近1小时': [moment().subtract('hours',1), moment()],                    '今日': [moment(), moment()],                    '昨日': [moment().subtract(1, 'days').startOf('day'), moment().subtract(1, 'days').endOf('day')],                    '最近7日': [moment().subtract(6,'days'), moment()],                    '最近30日': [moment().subtract(29, 'days'), moment()],                    '本月': [moment().startOf("month"), moment().endOf("month")],                    '上个月': [moment().subtract(1, "month").startOf("month"), moment().subtract(1, "month").endOf("month")]                },                opens: 'right',    // 日期选择框的弹出位置                separator: '-',                showWeekNumbers: false,     // 是否显示第几周                format: 'MM/DD/YYYY'            }            input.daterangepicker(myoptions);            container.find('.textbox-icon').on('click', function () {                container.find('input').trigger('click.daterangepicker');            });            if (options.onChange == undefined) {                console.log('Can not find function:onChange for', input[0]);            }            else {                input.on('cancel.daterangepicker', function (ev, picker) {                    $(this).val('');                    options.onChange('');                });                input.on('apply.daterangepicker', function (ev, picker) {                    options.onChange(picker.startDate.format('MM/DD/YYYY') +'-'+ picker.endDate.format('MM/DD/YYYY'));                });            }                                    return input;        },        destroy: function (target) {            $(target).daterangepicker('destroy');        },        getValue: function (target) {            return $(target).daterangepicker('getValue') ;        },        setValue: function (target, value) {                       $(target).daterangepicker('setValue', value);                   },        resize: function (target, width) {            $(target)._outerWidth(width)._outerHeight(24);           // $(target).daterangepicker('resize', width / 2);        }    }});

  

 

Datagrid 开启filter功能 参考代码如一下

 

 

$(function () {            $dg.datagrid("enableFilter", [                                {                    field: "StartDate",                    type: "dateRange",                    options: {                        onChange: function (value) {                            $dg.datagrid("addFilterRule", {                                field: "StartDate",                                op: "between",                                value: value                            });                            $dg.datagrid("doFilter");                        }                    }                },                {                    field: "EndDate",                    type: "dateRange",                    options: {                        onChange: function (value) {                            $dg.datagrid("addFilterRule", {                                field: "EndDate",                                op: "between",                                value: value                            });                            $dg.datagrid("doFilter");                        }                    }                },            ]);        })

  

后台代码如一下

if (rule.field == "StartDate" && !string.IsNullOrEmpty(rule.value))                    {                        if (rule.op == "between")                        {                            var datearray = rule.value.Split(new char[] { '-' });                            var start = Convert.ToDateTime(datearray[0]);                            var end = Convert.ToDateTime(datearray[1]);                            And(x => SqlFunctions.DateDiff("d", start, x.StartDate) >= 0);                            And(x => SqlFunctions.DateDiff("d", end, x.StartDate) <= 0);                        }                    }                    if (rule.field == "EndDate" && !string.IsNullOrEmpty(rule.value))                    {                        if (rule.op == "between")                        {                            var datearray = rule.value.Split(new char[] { '-' });                            var start = Convert.ToDateTime(datearray[0]);                            var end = Convert.ToDateTime(datearray[1]);                            And(x => SqlFunctions.DateDiff("d", start, x.EndDate) >= 0);                            And(x => SqlFunctions.DateDiff("d", end, x.EndDate) <= 0);                        }                    }

  

 

转载于:https://www.cnblogs.com/neozhu/p/7542102.html

你可能感兴趣的文章
Hadoop输出参数信息详解(16)
查看>>
ERROR 2002 (HY000): Can't connect to local MySQL错误
查看>>
Java版冒泡排序法
查看>>
关于FB4.6插件安装后默认语言环境的更改问题
查看>>
免费分区助手
查看>>
Javascript通过Name调用Function
查看>>
统计当前在线用户数量
查看>>
IntelliJ IDEA 乱码解决方案 (项目代码、控制台等)
查看>>
PHP项目记录
查看>>
.net面试题系列文章七(附答案)
查看>>
FastSocket
查看>>
ionic $ionicSlideBoxDelegate 滑动框事件
查看>>
点击文字,把input type="radio"也选中
查看>>
第一章 Java多线程技能
查看>>
Java 集合系列-第八篇-Map架构
查看>>
springmvc 3.2 @MatrixVariable bug 2
查看>>
React-Native PanResponder手势识别器
查看>>
IOS11 光标错位问题
查看>>
如何设计用户登录
查看>>
linux安装mysql5.7.19
查看>>