gpt4 book ai didi

javascript - 具有自定义过滤器的查找字段在 UCI 中无法正常工作

转载 作者:行者123 更新时间:2023-11-29 23:09:07 26 4
gpt4 key购买 nike

我这里有一些 JS 代码,它使用一些条件创建自定义过滤器,然后将其添加到表单的查找字段中。当此代码第一次被触发并运行时,它会正常工作;出现正确的结果。但是,如果您更改自定义过滤器的条件(更改 createCustomFilter 命令用于创建 fetchxml 的表单上的字段之一),那么在应该有结果的查找中却没有结果显示。

此问题仅出现在新的统一接口(interface)中。我已经在 Web 界面中测试了相同的代码,但没有出现此问题;代码运行正常。

我的猜测是之前应用的过滤器没有被删除?这就是为什么没有结果出现的原因。是否有任何解决方法可以让它在 UCI 中工作?

请指教。

var filter;

function OnFieldChange(executionContext) {
var formContext = executionContext.getFormContext();
if (filter != "" && filter != null) {
formContext.getControl("test_lookupfield").removePreSearch(lookupCustomFilter);
}
filter = createCustomFilter(executionContext);
formContext.getControl("test_lookupfield").addPreSearch(lookupCustomFilter);
}

function lookupCustomFilter(executionContext) {
var formContext = executionContext.getFormContext();
formContext.getControl("test_lookupfield").addCustomFilter(filter);
}

function createCustomFilter(executionContext) {
//creates a custom fetchxml filter that has been tested and is correct
}

最佳答案

以下是我们如何在 v9.1 系统的 UCI 和 Legacy UI 中过滤查找的本质:

//Legacy UI uses custom views, UCI only custom filters
views.push({
id: '{' + getRandomGuid().toUpperCase() + '}',
fetchXml: '' +
'<fetch mapping="logical" distinct="true" version="1.0">' +
'<entity name="product">' +
'<attribute name="productid" />' +
'<attribute name="productnumber" />' +
'<attribute name="name" />' +
'<attribute name="description" />' +
'<order attribute="productnumber" descending="false" />' +
'<filter type="and">' +
'<condition attribute="new_pricelevelid" operator="eq" value="' + myGuid + '" />' +
'</filter>';
'</entity>' +
'</fetch>',
layoutXml: '' +
'<grid name="resultset" object="' + productTypeCode + '" jump="name" select="0" icon="0" preview="0">' +
'<row name="result" id="productid">' +
'<cell name="name" width="125" />' +
'<cell name="description" width="400" />' +
'</row>' +
'</grid>',
name: 'Custom Product View',
recordType: productTypeCode,
Type: "0"
});
var CustomFilter = '<filter type="and">' +
'<condition attribute="new_pricelevelid" operator="eq" value="' + myGuid + '" />' +
'</filter>';
try {

var lookupParameters = {};
lookupParameters.entityTypes = ['quote'];
lookupParameters.defaultEntityType = 'quote';
//lookupParameters.defaultViewId = views[0].id;
lookupParameters.allowMultiSelect = false;

//Xrm.Internal.isUci() is unsupported!
if (Xrm.Internal.isUci() ) {
//Filter on UCI
if (CustomFilter != null) {
lookupParameters.filters = [{ filterXml: CustomFilter }];
}
}
else {
//Filter on Legacy UI
lookupParameters.customViews = [views[0]];
lookupParameters.viewIds = [views[0].id];
lookupParameters.defaultViewId = views[0].id;
}

//Use OOB CRM lookup w/ Custom Filter.
Xrm.Utility.lookupObjects(lookupParameters).then(
function (selectedItems) {
callback.call(scope, ifNull(selectedItems, []));
},
function (error) {
if (error != null) {
Xrm.Utility.alertDialog(error.message);
}
});
}
catch (e) {
Xrm.Utility.alertDialog(e.message);
}

请注意,为了简单和隐私,我改编了这段代码。我没有以当前形式对其进行测试。

关于javascript - 具有自定义过滤器的查找字段在 UCI 中无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54133422/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com