首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用插件检索子网格值,并将检索到的列值作为逗号存储在普通文本字段中

如何使用插件检索子网格值,并将检索到的列值作为逗号存储在普通文本字段中
EN

Stack Overflow用户
提问于 2022-09-23 14:53:01
回答 2查看 72关注 0票数 0

我在事件实体中有子网格名为跟踪和位置。现在,我想检索子网格值的名称,并将这些值存储在文本字段中。在路径列表字段中,如果它是关联的,我需要添加以逗号分隔的跟踪名称。如果不关联,则需要删除特定的值表单文本字段。.I是插件的新成员。我尝试了查询表达式,但对于使用筛选条件的跟踪和事件实体,我没有任何常见的字段。有谁能提出快速实现这一目标的方法吗?我尝试了以下代码:

代码语言:javascript
复制
if (context.MessageName.ToLower() == "associate")
        {
            // Obtain the target entity from the input parameters.
            Entity eventEntity = new Entity("leap_event");

            var pathwayList ="" ;

            QueryExpression query = new QueryExpression("leap_event");

            query.ColumnSet = new ColumnSet(true);

            LinkEntity linkEntity1 = new LinkEntity("leap_event", "leap_leap_event_leap_location", "leap_eventid", "leap_eventid", JoinOperator.Inner);

            LinkEntity linkEntity2 = new LinkEntity("leap_leap_event_leap_location", "leap_location", "leap_locationid", "leap_locationid", JoinOperator.Inner);

            linkEntity1.LinkEntities.Add(linkEntity2);

            query.LinkEntities.Add(linkEntity1);

            linkEntity2.LinkCriteria = new FilterExpression();

            linkEntity2.LinkCriteria.AddCondition(new ConditionExpression("", ConditionOperator.Equal, ""));

            EntityCollection collRecords = service.RetrieveMultiple(query);
            tracingService.Trace("load");
            for (int i = 0; i < collRecords.Entities.Count; i++)
            {
                tracingService.Trace("load1");
                var result = collRecords.Entities[i].GetAttributeValue<string>("leap_name"); 
                Console.WriteLine(result);
                pathwayList += result + ",";
                tracingService.Trace("pathwayName" + pathwayList);
                eventEntity["leap_pathwayList"] = pathwayList;
            }
        } 
EN

回答 2

Stack Overflow用户

发布于 2022-09-27 09:08:17

您将不得不为您的链接实体使用别名。以下面的示例为例。

我有帐户实体-> (N:N)列表成员实体-> (N:N)列表实体。

在你的情况下

leap_event实体-> ( N:N ) leap_leap_event_leap_location实体->(很可能是N:n或1:N) leap_event_leap_location实体。

此外,当您检索属性时,您必须使用GetAttributeValue<AliasedValue>,查看一下这篇文章,它将帮助您理解

代码语言:javascript
复制
// Instantiate QueryExpression query
var query = new QueryExpression("account");


// Add columns to query.ColumnSet
query.ColumnSet.AddColumns("name", "accountid");

// Add link-entity listmemberentity
var listmemberentity = query.AddLink("listmember", "accountid", "entityid");
listmemberentity.EntityAlias = "listmemberentity";

// Add link-entity listentity
var listentity = listmemberentity.AddLink("list", "listid", "listid");
listentity.EntityAlias = "listentity";

// Add columns to listentity.Columns
listentity.Columns.AddColumns("listname");
票数 0
EN

Stack Overflow用户

发布于 2022-10-08 08:46:50

没有必要使用链接实体。

QueryExpression必须直接在关联实体上执行,筛选器在查找字段上执行(我假设"leap_location“实体上的"leap_eventid”字段):

代码语言:javascript
复制
if (context.MessageName.ToLower() == "associate")
{
    var query = new QueryExpression("leap_location");
    query.ColumnSet.AddColumn("leap_name");
    // Lookup filter
    query.Criteria.AddCondition(new ConditionExpression("leap_eventid", ConditionOperator.Equal, context.TargetEntity.Id));
    // Optional statecode filter 
    query.Criteria.AddCondition(new ConditionExpression("statecode", ConditionOperator.Equal, 0));

    var collRecords = service.RetrieveMultiple(query);
    if (collRecords.Entities.Count > 0)
    {
        var pathwayList = string.Empty;
        foreach (var location in collRecords.Entities)
        {
            pathwayList += location.GetAttributeValue<string>("leap_name") + ",";
            tracingService.Trace($"pathwayName {pathwayList}");
        }
    }
    var eventEntity = new Entity("leap_event", context.TargetEntity.Id)
    {
        ["leap_pathwayList"] = pathwayList
    };
    service.Update(eventEntity); // Update required for PostOperation Plugin
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73829587

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档