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

是不是非常实用
引用的jquery 组件是 Date Range Picker / http://www.daterangepicker.com/

自定义扩展easyui datagird filter,参考代码如一下
$.extend($.fn.datagrid.defaults.filters, {
dateRange: {
init: function (container, options) {
var cc = $('<span class="textbox combo datebox"><span class="textbox-addon textbox-addon-right" style="right: 0px; top: 1px;"><a href="javascript:" class="textbox-icon combo-arrow" icon-index="0" tabindex="-1" style="width: 18px; height: 22px;"></a></span></span>').appendTo(container);
var input = $('<input type="text" style="border:0px">').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);
}
}
Easyui DataGrid DateRange Filter 漂亮实用的日期区间段筛选功能的更多相关文章
- [转载]easyui datagrid 时间格化(JS 日期时间本地化显示)
easyui datagrid 日期时间显示不正常,后台java 类型为 DATE 经过JSON工具一转化传到前台来就是这样,不便 于是想格式化一下, 格式化代码 如下: [javascript] v ...
- mysql 获取指定日期到指定日期 区间段的日期
第一种方法: cross join (就相当于mysql中的循环) CROSS JOIN 把两张表中的数据进行 N * M的组合,即笛卡尔积 这里的两张表利用 union all都有5条数据,所以进行 ...
- EasyUI datagrid 日期时间格式化
EasyUI datagrid中显示日期时间时,会显示为以下不太直观的数值: 添加以下JavaScript脚本,然后在field中添加 formatter: DateTimeFormatter 即可. ...
- easyui datagrid 中序列化后的日期格式化
1.在easyui datagrid 中序列化后的日期显示为:/Date(1433377800000)/ 2.格式化后的显示为: 2015-06-04 08:30:00 3.使用代码如下: 3.1. ...
- 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(8)-MVC与EasyUI DataGrid 分页
系列目录 前言 为了符合后面更新后的重构系统,文章于2016-11-1日重写 EasyUI Datagrid在加载的时候会提交一些分页的信息到后台,我们需要根据这些信息来进行数据分页再次返回到前台 实 ...
- 控制EasyUI DataGrid高度
这次要说的是控制EasyUI的高度,平时我公司的项目,用EasyUI较多,然后datagrid这个组件是用的非常多的.平时我们都是固定高度,常见代码如下: <table ...
- EasyUI Datagrid Datetime(EasyUI DataGrid 时间格式化)
EasyUI DataGrid 时间格式化 方法一: var Common = { //EasyUI用DataGrid用日期格式化 TimeFormatter: function (value, re ...
- easyui datagrid中datetime字段的显示和增删改查问题
datagrid中datetime字段的异常显示: 使用过easyui datagrid的应该都知道,如果数据库中的字段是datetime类型,绑定在datagrid显式的时候会不正常显示,一般需要借 ...
- easyui datagrid导出excel
[第十四篇]easyui datagrid导出excel <a class="btn btn-app" onclick="exportExcel()" ...
随机推荐
- 学习笔记TF048:TensorFlow 系统架构、设计理念、编程模型、API、作用域、批标准化、神经元函数优化
系统架构.自底向上,设备层.网络层.数据操作层.图计算层.API层.应用层.核心层,设备层.网络层.数据操作层.图计算层.最下层是网络通信层和设备管理层.网络通信层包括gRPC(google Remo ...
- 齐博cms 7.0 漏洞分析
** 0x01 原理分析 ** 还是很早之前爆出来的漏洞,现在拿出来学习一下,参考阿里巴巴: https://security.alibaba.com/... 漏洞发生在/inc/common.inc ...
- error MSB8008: 指定的平台工具集(v110)未安装或无效。请确保选择受支持的 PlatformToolset 值
如果你的电脑上有两个不同版本的VS,或者你的程序拷贝到别人的电脑上去运行,或者你是从别人那里拷贝来的项目,而你们俩用的VS版本不一样,就会在运行的时候出现这个问题,这个错误中的v110是VS2012使 ...
- 使用requests模块爬虫
虽然干技术多年了,但从没有写过博客,想来甚是惭愧,本篇作为我博客的第一篇,也是测试篇.不为写的好,只为博诸君一眸而已. 使用python爬虫,有几个比较常用的,获取html_content的模块url ...
- 运维之Linux基础(二)
运维之Linux基础(二) 1. file 命令基期用法 2. 文件系统 Linux的文件系统结构是树状结构,所有的文件都在/root跟目录下 /boot:系统启动相关的文件, 如:内核.initrd ...
- 谨慎使用递增/递减运算符(C++)
递增++和递减运算符--不论看起来还是用起来,都感觉是十分简单而又优雅的,然而其中却藏有无法受控制的陷阱,我们必须小心的避免错误的用法而出现的不可控的情况发生. 比方说:x = 2* x++ *(3 ...
- php Yii2使用registerJs或registerCss报错syntax error, unexpected end of file
解决方法: 注册时$js=<<<JS .....JS;//结尾处JS;应单独成行并且没有空格 JS;//这样就会报错,多了空格JS;//这样就不会
- Springmvc+mybatis的定时器配置文件spring-quartz.xml
<!-- 定时器配置文件---.xml 一个cron表达式有至少6个(也可能是7个)由空格分隔的时间元素.从左至右,这些元素的定义如下: 1.秒(0–59) 2.分钟(0–59) 3.小时(0– ...
- 转载>>>Jpgraph图表
一.开启GD库 Jpgraph需要GD库的支持,所以在调式JpGraph之前,确保GD库已开启,这很重要,不然后面的工作就没办法展开了.GD库在PHP5中是被默认安装的,我们只需开启GD库就可以了. ...
- 说说我和QQ和她的故事
这篇文章纯属感慨而写, 没有教学性质,额我是Jyang 2780217151是我现在用的QQ,然而这并不是我要说的 大概在11年还是12年的时候,我玩这些所谓的黑客圈子,以前的网名我就不说了. 我记得 ...