在客户关系管理(CRM)系统中,经常需要对大量数据进行查询和处理。如果记录的数量超过了网格视图的最大显示数量,那么就需要采取一些特殊的方法来处理这些数据。本文将介绍一种解决方案,即使用高级查找的FetchXML查询,并通过自定义的ASPX页面来处理这些查询。
首先,需要在CRM系统中添加一个自定义按钮,以便用户可以通过JavaScript触发高级查找。以下是实现这一功能的JavaScript代码,这段代码需要放置在自定义网格按钮的JavaScript属性中。
function getAdvFindFetchXml() {
if (document.getElementById('FetchXml')) {
return document.getElementById('FetchXml').value;
} else {
return '';
}
}
var sUrl = '/ISV/YourPage.aspx';
var sWin = window.open(sUrl, '', 'height=650,width=750,toolbar=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=yes,modal=yes');
接下来,需要创建一个自定义的ASPX页面来处理事件和FetchXML查询。以下是创建自定义ASPX页面的步骤:
1. 创建一个ASPX页面。
2. 在页面上添加一个asp:TextBox或asp:HiddenField,命名为"crmAdvFindFetchXml"。
3. 在页面的标签之前复制并粘贴以下JavaScript代码。这段代码会将高级查找的FetchXML查询赋值给控件。
<script type="text/javascript">
document.getElementById('crmAdvFindFetchXml').value = window.opener.getAdvFindFetchXml();
</script>
4. 在页面上添加一个asp:Button,并为其创建一个PostBack按钮点击事件。
5. 在asp:Button的点击事件中复制并粘贴以下代码。
string fetchXml = crmAdvFindFetchXml.Text.Trim();
CrmService crmService = new CrmService();
/*
....初始化CrmService关于CRM实例....
*/
crmService.Fetch(fetchXml);
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml(result);
XmlNodeList xmlNodes = xmlDoc.GetElementsByTagName("result");
foreach (XmlNode item in xmlNodes) {
if (item["accountid"] != null) {
/*
accountid只是一个示例,它可以是fetchxml中检索的任何字段ID,以满足需求
*/
Response.Write(item["accountid"].InnerText);
}
}
通过这种方式,可以有效地处理CRM系统中的大量记录。这种方法不仅可以提高数据查询的效率,还可以为用户提供更加灵活的数据操作方式。