65.9K
CodeProject 正在变化。 阅读更多。
Home

如何在 Dynamics CRM 中获取高级查找 FetchXml 查询

starIconstarIconstarIconstarIconstarIcon

5.00/5 (1投票)

2013 年 10 月 11 日

CPOL
viewsIcon

14079

为了我的一个应用程序,我需要获取高级查找找到的所有记录并管理这些记录。如果记录数量少于最大值

为了我的一个应用程序,我需要获取高级查找找到的所有记录并管理这些记录。如果记录数量少于最大显示网格视图的数量,则没有问题。 如果记录数量超过这个数字怎么办?我的解决方案是获取高级查找 FetchXml 查询,并通过 JavaScript 在自定义 aspx 页面上的网格按钮中评估它。以下是需要作为 JavaScript 属性放置在自定义网格按钮中的 JavaScript 代码。在 Crm Sdk 中,您可以找到如何在网格上添加自定义按钮。
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 查询。1-创建一个 aspx 页面。2-在您的页面上添加一个 asp:textbox 或 asp:hiddenfield,命名为“crmAdvFindFetchXml”。3-将以下 JavaScript 代码复制并粘贴到您的页面的 </html> 标签之前。这段代码会将高级查找 FetchXml 查询分配给您的控件。
<script type="text/javascript" language="javascript">
document.getElementById('crmAdvFindFetchXml').value=window.opener.getAdvFindFetchXml();
</script>

4-在您的页面上添加一个 asp:button,并为该按钮创建一个回发按钮单击事件。5-将以下代码复制并粘贴到 asp:button 的单击事件中。
string fetchXml=crmAdvFindFetchXml.Text.Trim();
CrmService crmService=new CrmService();
/*
....
init your CrmService regarding your crm instance
....
*/

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 is just for example ,it can be any fieldid which is retrieved in fetchxml for your needs */
{
Response.Write(item["accountid"].InnerText);
}
}

祝好,


 

© . All rights reserved.