通过easyui的combobox配合后台动态实现季度获取

在开发中,有这么个需求,根据项目上线时间,按季度统计费用,由于项目上线时间变化太大,后来直接配置在配置文件中,待点击统计菜单,打开统计页面时,向后台请求季度数据;读取配置文件,获得上线时间,调用工具类获得季度数据,返回用来填充easyui的combobox。代码注释比较详细,直接贴代码,作以记录。Java端工具类/** * 动态获取季度 * @author iCheetor *...
摘要由CSDN通过智能技术生成

在开发中,有这么个需求,根据项目上线时间,按季度统计费用,由于项目上线时间变化太大,后来直接配置在配置文件中,待点击统计菜单,打开统计页面时,向后台请求季度数据;读取配置文件,获得上线时间,调用工具类获得季度数据,返回用来填充easyui的combobox。

代码注释比较详细,直接贴代码,作以记录。

Java端工具类

/**
 * 动态获取季度
 * @author iCheetor
 *
 */
public class CreateDynamicQuarter {

	public static void main(String[] args) throws ParseException {
		List<Map<String, Object>> show = show("2017-08-20");
		System.out.println(show);
		List<Map<String, Object>> showFuture = showPastAndFuture("2017-10-30");
		System.out.println(showFuture);
	}
	/**
	 * 比较当前日期和参数给定日期,小于当前日期返回true
	 * @param date
	 * @return
	 * @throws ParseException
	 */
	public static boolean validate(String date) throws ParseException{
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-mm-dd");
		Date parse = sdf.parse(date);
		Date current = new Date();
		if (parse.getTime() < current.getTime()){
			return true;
		} 
		return false;
	}
	/**
	 * 从给定日期到当前日期之间的季度,给定小
	 * @param date
	 * @return
	 * @throws ParseException
	 */
	public static List<Map<String,Object>> show(String date) throws ParseException{
		List<Map<String,Object>> list = new ArrayList<Map<String,Object>>();
		String[] split = date.split("-");
		int y = Integer.parseInt(split[0]);//年
		int m = Integer.parseInt(split[1]);//月
		int quarterStart = getQuarter(m);  //对应季度
		for(;;){
			
			if(check(y,quarterStart)){//比当前大,直接break
				for(int i = 0; i < 4; i ++){
					if(i != 0){ //第一次,使用初始计算季度,以后加1
						quarterStart = quarterStart + 1;
					}
					if(quarterStart > 4){//第四季度+1大于4,跳出内循环
						break;
					} else {
						if(check(y,quarterStart)){
							Map<String,Object> map = new HashMap<String, Object>();
							String key = UUID.randomUUID().toString();
							String value = getValue(y,quarterStart);
							map.put("id", key );
							map.put("name", value);
							list.add(map);
						}
					}
				}
				y = y + 1; //内循环结束,年份加1,月份置为1,季度置为1
				m = 1;
				quarterStart = 1;
			} else {
				break;
			}
		}
		/**
		 * 集合反转,保证倒序,加入最后一个元素,“自定义”
		 */
		Collections.reverse(list);
		list.add(addLast0());
		/**
		 * 可以不用处理,如果第一个元素上的操作比较特殊,再进行处理
		 */
		processFirst(list);
		return list;
	}
	/**
	 * 处理第一个元素
	 * @param list  待
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
easyui combobox下拉框默认是单选的,如果要实现多选,需要做以下修改: 1. 在combobox的options中添加multiple:true,表示启用多选模式。 2. 在combobox的options中添加onSelect和onUnselect两个事件,用于在选择和取消选择时更新选中的值。 3. 在combobox的panel中添加checkbox或者复选框,用于选择多个选项。 以下是实现多选的示例代码: HTML代码: ``` <input id="cc" class="easyui-combobox" style="width:200px;"> ``` JavaScript代码: ``` $('#cc').combobox({ url: 'get_data.php', valueField: 'id', textField: 'text', multiple: true, panelHeight: 'auto', onSelect: function(record){ var value = $(this).combobox('getValues'); value.push(record.id); $(this).combobox('setValues', value); }, onUnselect: function(record){ var value = $(this).combobox('getValues'); var index = value.indexOf(record.id); if (index >= 0){ value.splice(index, 1); } $(this).combobox('setValues', value); }, onLoadSuccess: function(){ var data = $(this).combobox('getData'); var value = $(this).combobox('getValues'); var panel = $(this).combobox('panel'); panel.find('.combo-panel-checkbox').remove(); $.each(data, function(index, item){ var checkbox = $('<input type="checkbox" class="combo-panel-checkbox">').val(item.id); if (value.indexOf(item.id) >= 0){ checkbox.prop('checked', true); } checkbox.insertBefore(panel.find('.combo-panel-list')); }); }, onShowPanel: function(){ var data = $(this).combobox('getData'); var value = $(this).combobox('getValues'); var panel = $(this).combobox('panel'); panel.find('.combo-panel-checkbox').prop('checked', false); $.each(data, function(index, item){ if (value.indexOf(item.id) >= 0){ panel.find('.combo-panel-checkbox[value="'+item.id+'"]').prop('checked', true); } }); } }); ``` 注:示例代码中的get_data.php是一个返回JSON格式数据的接口,可以根据实际情况修改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值