我将在4周后使用MS CRM 2011。我必须将现有的引用复制到新的引用中。 哪种方式最好的方法呢?使用Javascript或C#aspx主页?
有些人能举例说明如何做到这一点吗?
先谢谢!
托马斯
答案 0 :(得分:0)
有很多方法可以做到这一点。这是两个。
http://www.renauddumont.be/en/2011/crm-2011-passing-field-values-to-a-form-using-url-parameters
http://msdn.microsoft.com/en-us/library/gg334436.aspx
http://msdn.microsoft.com/en-us/library/gg334375.aspx
我之前已经为联系人实现了这一点。我的要求最适合URL初始化方法。我也可以看到这种技术的优势。对于这种方法,我也建议Gareth Tucker's blog entry描述如何做到这一点。
我使用了Gareth帖子的几个元素,但是我把我的结尾剧本分解成了一些更紧凑的东西。实质上,您使用javascript来提取特定字段的值,并将它们作为查询字符串参数排列到特殊格式的CRM表单URL中。此URL解包查询字符串参数,并以新形式为您传递的值分配相应的字段。 当您打开一个项目并且想要克隆它并让新表单保持打开以供用户编辑时,这非常有用。
我最终调用了这个脚本,该脚本是作为Web资源添加的,来自Contact表单功能区。 Gareth也很好地解释了如何做到这一点。
// Register this namespace to avoid collision with other scripts that may
// run within this form
Type.registerNamespace("BF.Contact");
// Create a function that will be called by a ribbon button.
BF.Contact.Clone = function() {
var extRaqs = "";
// ownerid
extRaqs += "&ownerid=" + Xrm.Page.getAttribute("ownerid").getValue()[0].id;
extRaqs += "&owneridname=" + Xrm.Page.getAttribute("ownerid").getValue()[0].name;
extRaqs += "&owneridtype=systemuser";
extRaqs += BF.Contact.Clone.GetValue("address1_line1");
extRaqs += BF.Contact.Clone.GetValue("address1_line2");
extRaqs += BF.Contact.Clone.GetValue("address1_city");
extRaqs += BF.Contact.Clone.GetValue("address1_postalcode");
extRaqs += BF.Contact.Clone.GetValue("mobilephone");
extRaqs += BF.Contact.Clone.GetValue("telephone1");
extRaqs += BF.Contact.Clone.GetValue("telephone2");
extRaqs += BF.Contact.Clone.GetValue("fax");
extRaqs += BF.Contact.Clone.GetValue("emailaddress1");
extRaqs += BF.Contact.Clone.GetValue("address1_county");
extRaqs += "&donotsendmm=1"
var newURL = Xrm.Page.context.getServerUrl() + "/main.aspx?etn=contact&pagetype=entityrecord&extraqs=";
newURL += encodeURIComponent(extRaqs);
window.open(newURL , "_blank", "width=900px,height=600px,resizable=1");
}
BF.Contact.Clone.GetValue = function(attributename) {
var _att = Xrm.Page.getAttribute(attributename);
var _val = "";
if (_att == null || _att.getValue() == null ) {
return "";
}
if (_att.getFormat() == "date") {
_val = _att.getValue().format("MM/dd/yyyy");
} else {
_val = _att.getValue();
}
return "&" + attributename + "=" + _val;
}
一些缺点:
如果您希望能够克隆许多项目,那么快速执行此操作的方法是创建一个针对要克隆的实体的工作流程或对话框。在工作流程中,创建目标类型的新项目。新创建的项目的属性可以设置为您的要求。将它们默认为静态值,使用克隆项中的值或工作流允许的任何其他值填充它们。一个主要缺点是向用户呈现表单将不可用。