电脑桌面
添加蚂蚁七词文库到电脑桌面
安装后可以在桌面快捷访问

日期范围字段如何限制可选范围

来源:金蝶云社区作者:金蝶2024-09-233

日期范围字段如何限制可选范围



1 问题描述

日期字段有“可选范围”功能,参考日期字段。当前日期范围字段不支持该功能,类似功能需要借助插件来实现。


2 原理及思路

  • 日期范围控件的类为:DateRangeEdit。其中有setMinDate(Date date)和setMaxDate(Date date)方法用于设置最小以及最大可选范围。

  • 因为对灵活性的需求,可以在单据内再添加整数字段,用于设置“最早可选N天前”、“最迟可选N天后”类似的场景。


3 截图演示功能

  • 以下两张图可以看到,当限制当前日期前3天”和前7天”时,日期范围控件均实现了逻辑。



4 代码展示

package nm21.plugin.formPlugin;

import kd.bos.bill.AbstractBillPlugIn;
import kd.bos.dataentity.OperateOption;
import kd.bos.dataentity.entity.ILocaleString;
import kd.bos.entity.datamodel.events.PropertyChangedArgs;
import kd.bos.form.events.BeforeDoOperationEventArgs;
import kd.bos.form.field.DateRangeEdit;
import kd.bos.form.operate.FormOperate;
import kd.bos.portal.util.SerializationUtils;
import kd.sdk.plugin.Plugin;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.EventObject;

/**
 * 单据界面插件
 */
public class DateRangePlugin extends AbstractBillPlugIn implements Plugin {

    @Override
    public void propertyChanged(PropertyChangedArgs e) {
        super.propertyChanged(e);
        String name = e.getProperty().getName();
        //监听单据内设置字段的值改变,用于计算新的日期范围控件的最早可选日期
        if ("nm21_integerfield".equals(name)) {
            SimpleDateFormat sdf = new SimpleDateFormat();
            sdf.applyPattern("yyyy-MM-dd HH:mm:ss");
            //计算最早可选时间
            String minDate = computeMinDate(this.getModel().getValue("nm21_integerfield"),sdf);
            //根据最早可选时间,重新设置日期范围控件
            changeDateRange(minDate,sdf);
        }
    }

    private void changeDateRange(String minDate,SimpleDateFormat sdf) {
        if (null == minDate) return;

        Date date = 

日期范围字段如何限制可选范围

1 问题描述日期字段有“可选范围”功能,参考日期字段。当前日期范围字段不支持该功能,类似功能需要借助插件来实现。2 原理及思路日期范...
点击下载文档文档为doc格式

声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。

确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息
QQ群
  • 答案:my7c点击这里加入QQ群
支持邮箱
微信
  • 微信