自动使用默认通配符(*)的CRM 2011快速查找搜索 [英] CRM 2011 Quick Find Search using default wildcard (*) automatically

查看:67
本文介绍了自动使用默认通配符(*)的CRM 2011快速查找搜索的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我尝试了在另一篇文章中找到的以下内容,但似乎没有什么不同:

I have tried the following which I found in another post but it doesn't seem to make a difference:

1。转到以下路径,找到 stage.js文件 C:\Program Files\Microsoft Dynamics CRM\CRMWeb_static_common\scripts\

1.Go to the following path and find "stage.js" file "C:\Program Files\Microsoft Dynamics CRM\CRMWeb_static_common\scripts\"

2。创建此文件的备份副本

2.Create a backup copy of this file before any modification, so that you have the original copy too

3。在诸如EmEditor之类的文本编辑器中打开 stage.js

3.Open "stage.js" in a text editor such as EmEditor

4。查找以下代码行:sFindCriteria = Trim(findCriteria.value.replace(/ [] + /, )); findCriteria.value = sFindCriteria;

4.Find the following line of code: sFindCriteria=Trim(findCriteria.value.replace(/[]+/,""));findCriteria.value=sFindCriteria;

5。现在将其更改为:sFindCriteria = Trim(findCriteria.value.replace(/ [] + /,)); if(sFindCriteria! =&& sFindCriteria.substr(0,1)!=)sFindCriteria = + sFindCriteria; findCriteria.value = sFindCriteria;

5.Now change it to : sFindCriteria=Trim(findCriteria.value.replace(/[]+/,""));if (sFindCriteria != "" && sFindCriteria.substr(0, 1) != "") sFindCriteria = "" + sFindCriteria;findCriteria.value=sFindCriteria;

6。保存文件,然后尝试快速查找以查看更改

6.Save the file and try Quick Find to see the change

任何想法为什么这不起作用以及我可以进行哪些更改才能使它起作用??

Any ideas why this doesn't work and what I can change to get this to work??

推荐答案

我相信您在谈论此帖子:P
在Dynamics CRM中,如何默认在快速查找中启用通配符(*)搜索?

I believe your talking about this post :P In Dynamics CRM, how do I enable wildcard (*) search by default in Quick Find?

我在2014年问过同样的问题,但是现在我有了解决方案。我同意 Henk van Boeijen 修改内置脚本是一种不受支持的方式,所以我找到了一种受支持的方式。

I asked the same Question in 2014, but now i have got the solution. I agree with Henk van Boeijen modifying the built-in script is an un-supported way, so i found a supported way.

编写插件:

  public void Execute(IServiceProvider serviceProvider)
    {
        string OriginalSearchQueryString = String.Empty;
        string UpdatedOriginalQueryToLikeQuery = String.Empty;

        try
        {
            IPluginExecutionContext ContextInstance = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext));
            IOrganizationService ServiceInstance = ((IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory))).CreateOrganizationService(ContextInstance.InitiatingUserId);
            // Critical Point here - NOTICE that the InputParameters Contains the word Query
            if (ContextInstance.Depth < 2 && ContextInstance.InputParameters.Contains(QueryLiteral) && ContextInstance.InputParameters[QueryLiteral] is QueryExpression)
            {

                QueryExpression QueryPointer = (ContextInstance.InputParameters[QueryLiteral] as QueryExpression);
                //Verify the conversion worked as expected - if not, everything else is useless
                if (null != QueryPointer)
                {
                    // Check if the request is coming from any Search View 
                    // We know this b/c Criteria isn't null and the Filters Count > 1
                    if (null != QueryPointer.Criteria && (QueryPointer.Criteria.Filters.Count > 1 || QueryPointer.Criteria.Filters.Count == 1))
                    {
                        if (QueryPointer.Criteria.Filters.Count > 1 && QueryPointer.Criteria.Filters[0].Conditions.Count > 0 && QueryPointer.Criteria.Filters[0].Conditions[0].Values.Count > 0)
                            OriginalSearchQueryString = QueryPointer.Criteria.Filters[1].Conditions[0].Values[0].ToString();
                        else if (QueryPointer.Criteria.Filters.Count == 1 && QueryPointer.Criteria.Filters[0].Conditions.Count > 0 && QueryPointer.Criteria.Filters[0].Conditions[0].Values.Count > 0)
                            OriginalSearchQueryString = QueryPointer.Criteria.Filters[0].Conditions[0].Values[0].ToString();

                        if (CheckIfTheQueryIsNotForWebResourceAndSearchIsNotByLetter(ContextInstance.PrimaryEntityName, OriginalSearchQueryString))
                        {
                            OriginalSearchQueryString = String.Format(CultureInfo.CurrentCulture, "{0}{1}", LIKE, OriginalSearchQueryString);
                            OriginalSearchQueryString = ModifyAllConditionExpressionsInCriteriaToLikeOperator(OriginalSearchQueryString, QueryPointer);
                            ContextInstance.InputParameters[QueryLiteral] = QueryPointer;
                        }
                    }
                }
            }
        }
        catch (Exception ex)
        {
            Logger.Error("Exception occured in QuickSearch()", ex);
        }
    }


private bool CheckIfTheQueryIsNotForWebResourceAndSearchIsNotByLetter(string entityLogicalName, string originalSearch)
    {

        if (entityLogicalName.ToLower() == "webresource" || String.IsNullOrWhiteSpace(originalSearch) || entityLogicalName.ToLower() == "opportunity")
            return false;

        else if (originalSearch.StartsWith("[") && originalSearch.EndsWith("]%"))
            return false;

        return true;
    }


private string ModifyAllConditionExpressionsInCriteriaToLikeOperator(string OriginalSearchQueryString, QueryExpression QueryPointer)
    {
        if (null != QueryPointer.Criteria)
        {
            //Change the default 'BeginsWith'Operator to 'Contains/Like' operator in the basic search query
            foreach (FilterExpression FilterSet in QueryPointer.Criteria.Filters)
            {
                foreach (ConditionExpression ConditionSet in FilterSet.Conditions)
                {
                    if (ConditionSet.Operator == ConditionOperator.Like)
                    {
                        if (OriginalSearchQueryString != "")
                            ConditionSet.Values[0] = OriginalSearchQueryString;
                        else
                        {
                            OriginalSearchQueryString = QueryPointer.Criteria.Filters[0].Conditions[0].Values[0].ToString();
                            OriginalSearchQueryString = String.Format(CultureInfo.CurrentCulture,
                                             "{0}{1}", LIKE, OriginalSearchQueryString);
                            ConditionSet.Values[0] = OriginalSearchQueryString;
                        }
                    }
                }
            }
        }
        return OriginalSearchQueryString;
    }

注册该插件,如下所示:

Register this plugin as below:

消息 RetrieveMultiple

主要实体

次要实体 none

事件性的ple子执行阶段 操作前

执行模式 同步

这篇关于自动使用默认通配符(*)的CRM 2011快速查找搜索的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆