Dynamics CRM 前端LookUp查找字段过滤和清除过滤

假设我们在窗体有两个LookUp字段A和B,其中B字段需要根据A字段进行实时的过滤选择,就会需要用到过滤和清除过滤。

我就直接在控制台演示了

如图:

增加过滤很简单,我这里就过滤只显示名称为“卢宝”的联系人

// 声明一个全局变量控制过滤条件是否启用
var isFilterApplied = true;
// 原始预搜索事件处理函数,包含过滤条件
var originalPreSearchHandler = function() {
    if (isFilterApplied) {
        var filter = "<fetch version='1.0' output-format='xml-platform' mapping='logical' distinct='false'><entity name='contact'><attribute name='fullname' /><attribute name='contactid' /><order attribute='fullname' descending='false' /><filter type='and'><condition attribute='fullname' operator='eq' value='卢宝' /></filter></entity></fetch>";
        Xrm.Page.getControl("primarycontactid").addCustomFilter(filter);
    }
};
// 将原始预搜索事件处理函数绑定到查找字段
Xrm.Page.getControl("primarycontactid").addPreSearch(originalPreSearchHandler);

效果图

清除上边增加的过滤条件

// 定义清除过滤条件的函数
function clearFilter() {
    // 置标志变量为false,表示不再应用过滤条件
    isFilterApplied = false;

    // 触发查找字段的变更事件,以重新执行预搜索
    //Xrm.Page.getControl("primarycontactid").fireOnChange();

    // 可选步骤:如果有必要,也可以移除原预搜索事件处理函数,再重新绑定(防止之后误触发过滤)
    Xrm.Page.getControl("primarycontactid").removePreSearch(originalPreSearchHandler);
    Xrm.Page.getControl("primarycontactid").addPreSearch(originalPreSearchHandler);
}

// 当需要清除过滤条件时调用此函数
clearFilter();

查询的就是全部的联系人了,效果图

全部代码:

// 声明一个全局变量控制过滤条件是否启用
var isFilterApplied = true;
// 原始预搜索事件处理函数,包含过滤条件
var originalPreSearchHandler = function() {
    if (isFilterApplied) {
        var filter = "<fetch version='1.0' output-format='xml-platform' mapping='logical' distinct='false'><entity name='contact'><attribute name='fullname' /><attribute name='contactid' /><order attribute='fullname' descending='false' /><filter type='and'><condition attribute='fullname' operator='eq' value='卢宝' /></filter></entity></fetch>";
        Xrm.Page.getControl("primarycontactid").addCustomFilter(filter);
    }
};
// 将原始预搜索事件处理函数绑定到查找字段
Xrm.Page.getControl("primarycontactid").addPreSearch(originalPreSearchHandler);


// 定义清除过滤条件的函数
function clearFilter() {
    // 置标志变量为false,表示不再应用过滤条件
    isFilterApplied = false;

    // 触发查找字段的变更事件,以重新执行预搜索
    //Xrm.Page.getControl("primarycontactid").fireOnChange();

    // 可选步骤:如果有必要,也可以移除原预搜索事件处理函数,再重新绑定(防止之后误触发过滤)
    Xrm.Page.getControl("primarycontactid").removePreSearch(originalPreSearchHandler);
    Xrm.Page.getControl("primarycontactid").addPreSearch(originalPreSearchHandler);
}

// 当需要清除过滤条件时调用此函数
clearFilter();
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值