是否有可能在结果页面上检索高级查找查询/ fetchxml?在触发结果按钮之前,我可以按Fetchxml按钮,但在结果页面上则不能。是否可以通过javascript或C#检索此查询/ xml,并且必须在结果页上。
答案 0 :(得分:0)
我不确定100%是否在谈论同一件事,但是可以使用Fetchxml声明查询。
看看this page。 在这里,他们使用FetchExpression(string)来查询常规组织服务。您只需要组织服务和fetchxml即可对其进行查询。小例子(来自上面的链接!):
// Retrieve all accounts owned by the user with read access rights to the accounts
and
// where the last name of the user is not Cannon.
string fetch2 = @"
<fetch mapping='logical'>
<entity name='account'>
<attribute name='accountid'/>
<attribute name='name'/>
<link-entity name='systemuser' to='owninguser'>
<filter type='and'>
<condition attribute='lastname' operator='ne' value='Cannon' />
</filter>
</link-entity>
</entity>
</fetch> ";
EntityCollection result = _serviceProxy.RetrieveMultiple(new
FetchExpression(fetch2));
foreach (var c in result.Entities)
{
System.Console.WriteLine(c.Attributes["name"]);
}
如您所见,这很可能是控制台工作。然后,如何使用实体本身取决于您。
答案 1 :(得分:0)
据我所知,没有钩子可以自定义“高级查找”页面,因此无法添加JavaScript来完成您想要的事情。
但是,您可以编写一个在RetrieveMultiple
消息上触发的插件。
在插件中,您可以从RetrieveMultipleRequest那里获得QueryExpression
var q = (QueryExpression)context.InputParameters["Query"];
然后convert it进入FetchXML。
var conversionRequest = new QueryExpressionToFetchXmlRequest
{
Query = q
};
var conversionResponse = (QueryExpressionToFetchXmlResponse)_serviceProxy.Execute(conversionRequest);
var fetchXml = conversionResponse.FetchXml;
请注意,我尚未测试以上代码。而且由于我还没有做过这种精确的技术,有可能您可以将Query直接转换为FetchXML并跳过转换调用。
因此,您可能想尝试一下:
var q = (FetchExpression)context.InputParameters["Query"];
RetrieveMultiple插件具有其caveats。但是,how bad is it?
在相关说明中,如果用户将“高级查找”另存为个人视图,则可以从UserQuery实体中检索其FetchXML。