Dynamics CRM视图中的连锁/计算列

时间:2010-09-08 16:19:54

标签: dynamics-crm dynamics-crm-4

我是MS Dynamics的新手,我想知道是否有一种方法可以在视图中添加列,这是其他一些列的串联,例如:

Firstname + ' ' + Lastname As Fullname

似乎没有明显(优雅)的解决方案,我看到的所有建议都建议使用javascript来维护新属性。

更进一步,如果我想从另一列推导或计算一个列,例如一个人从出生日期开始的年龄,这需要在视图加载时动态计算,对吗?我再也无法立即看到一种方法来为CRM框架提供这种简单的功能。也许我错过了什么?

非常感谢任何建议。

3 个答案:

答案 0 :(得分:7)

你没有遗漏任何东西。对您的问题没有一个优雅的解决方案。如果您想在视图中使用它,则需要添加自定义列来显示它。

如果真正计算(在数据库中存储固定值可能是陈旧的,如在您的年龄示例中)那么您需要在Fetch消息的后续步骤中添加插件,解析XML以确定如果正在返回您的实体,请解析应计算的属性,计算该值,然后将计算出的属性插入到结果xml中。

假设您没有在视图中显示出生日期字段(您只想显示年龄),那么您还必须在获取消息的前一步中插入一个插件,解析XML以确定您的实体是否是正在获取的实体,确定是否返回了hte age列,如果是,则将计算基础列注入要返回的列集。

请注意,如果您在SSRS报告中使用过滤视图,则不会执行这些插件步骤,因此在这些情况下您必须计算TSQL中的年龄。我认为您无法在CRM创建的向导报告中显示年龄列(您无法在此处获取TSQL且插件无法运行)。

如果您有一些可以修复的东西(连接),我会在该实体的创建/更新插件中计算它并将其存储在自定义属性(Fullname)中。在这种情况下,该属性将仅适用于网格视图,各种报告等等。

答案 1 :(得分:3)

在Dynamics CRM中没有像计算列那样的东西。 benjynito对使用插件是正确的,这是一个可行的解决方案。

但是如果足以计算要在表单上显示的字段,我通常使用JavaScript来“伪造”一个属性。

为了让您知道如何操作,这里有一段代码,我使用jQuery插入标签和readonly文本框,以显示父记录字段值(在我的情况下是电话号码)。

// create label
$("#ad_contactid_c").next().next().find("label").text("Contact Phone:");
// create textbox
var phoneNumber = $(document.createElement("input")).addClass("ms-crm-Text ms-crm-ReadOnly").attr("contentEditable", "false").attr("id", "d_phoneNumber");
$("#ad_contactid_c").next().next().next().append(phoneNumber);
// fill textbox value
$("#d_phoneNumber").val(phone);

答案 2 :(得分:1)

只需添加插件选项和javascript选项,还可以选择安排任务来计算和设置属性。我已将此技术用于“已用时间”属性,例如,该属性需要每天更新。

该任务可以是使用SDK更新数据的自定义服务或计划控制台应用程序,也可以是Scribe(或类似)作业。