javascript - 如果帐户有相关实体记录,则显示弹出窗口/警报

标签 javascript dynamics-crm-2011

我创建了一个名为 Alert 的自定义实体。我已将其与开箱即用的帐户实体关联起来。

我现在想要做的是自定义帐户表单,以便当用户打开它时,它会检查当前帐户是否有任何事件警报。如果是这样,它应该显示一条消息,通知他们这一点(JavaScript 警报?),然后导航到该帐户的警报 View 。

我已经在 CRM 中完成了一些基本的 JavaScript,但我不确定如何查询相关实体。

注意事件警报由警报中的“显示起始日期”和“显示终止日期”定义为事件日期(“显示起始日期”<= 今天且“显示终止日期”>=“今天”)。

更新

感谢您为我指明了 oData 的方向。我现在有以下功能,它可以查找帐户集,但扩展与警报的关系。我正在尝试弄清楚如何检查是否有任何警报,目前我的代码总是触发 JavaScript 警报。

function CheckForAlerts(accountId)
{
    var odataSelect = "http://mscrmdev/Test/xrmservices/2011/OrganizationData.svc/AccountSet?$expand=new_account_new_alert_Account&$filter=AccountNumber eq '" + accountId + "'";

    $.ajax({
           type: "GET",
           contentType: "application/json; charset=utf-8",
           datatype: "json",
           url: odataSelect,
           beforeSend: function (XMLHttpRequest) { XMLHttpRequest.setRequestHeader("Accept", "application/json"); },
           success: function (data, textStatus, XmlHttpRequest) 
               { 
                   // Use only one of these two methods

                   // Use for a selection that may return multiple entities
                   ProcessReturnedEntities(data.d.results); 

               },
           error: function (XmlHttpRequest, textStatus, errorThrown) { alert('OData Select Failed: ' + odataSelect); }
       });
}

function ProcessReturnedEntities(ManyEntities)
{
    var oneEntity = ManyEntities[0];

    if (oneEntity != null)
    {
        alert('There are active alerts associated with this account.');
    }
}

最佳答案

执行此操作的最佳方法是通过 JavaScript 中的 oData 查询。 CRM 2011 SDK 附带了一些用于 oData 调用的辅助函数,如下所示。您将需要使用“retrieveMultiple”方法,该方法允许您通过查找相关“帐户”来检索所有“警报”。

首先将 SDK 中的“RESTJQueryEditor.js”文件添加到您的表单,然后您可以添加自己的自定义脚本来执行检索。然后,我建议创建您希望在回调成功函数中向用户显示的消息,如下所示:-

retrieveMultiple('nameOfYourAlertEntitySet', '?$filter=myAccountLookupName eq ' + accountId, function(alerts){
    if(alerts.length > 0)
    {
        var message = '';

        for(var index = 0; index<alerts.length; index++)
        {
            message += 'alert: ' + alerts[index].name;
        }   

        alert('Found associated alerts: ' + message);
    }
    else
    {
        alert('No associated alerts found for this account');
    }
}, 
function(){
    // Log an exception
});

当然,您会希望使警报消息更好一点,并相应地调整您的属性名称,但我相信这就是您想要做的事情。此外,您可以使用“and”关键字在过滤器中的警报实体上添加任何其他条件。

如果您有任何问题,请告诉我。

关于javascript - 如果帐户有相关实体记录,则显示弹出窗口/警报,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10027404/

相关文章:

javascript - 如何在 Firefox 中启用剪贴板?

javascript - 如何管理 CouchDB 代码出来呢?

javascript - 匹配jquery中id的多个部分

view - 如何加快 Microsoft Dynamics CRM 2011 中的查询速度

dynamics-crm-2011 - CRM 2011 插件 - 未更新时获取字段值

sql - 将自己的表添加到 CRM 2011 数据库

javascript - "Submit"按钮发送邮件但不重定向?

javascript - jQuery 将相同的类添加到两个不同容器中的相同元素索引

dynamics-crm-2011 - 如何在 MS CRM 2011 中添加 Web 引用

dynamics-crm-2011 - 客户关系管理 2013 : Calling actions from javascript