CRM以编程方式创建字段

时间:2016-08-25 15:50:51

标签: c# dynamics-crm-2011

有没有办法为实体创建一个全新的字段,例如插件或Web服务(然后与视图关联)?

我浏览了互联网但却找不到任何东西。

2 个答案:

答案 0 :(得分:2)

使用CreateAttributeRequest创建具有所需元数据的新属性。

以编程方式将其添加到视图中并不简单。您需要编辑Layout XML元素并添加新创建的属性。 This answer should help you get started with it.

答案 1 :(得分:1)

您需要执行CreateAttributeRequest来更改CRM元数据。

int XValue;
int YValue;

void AssignValue(string VariableName,int VariableValue)
{
    VariableName = VariableValue;
}

void CallAV()
{
    AssignValue("XValue", 10);
    AssignValue("YValue", 15);

}

然后您需要Customize the Entity View。它们作为记录存储在CRM中,并由XML表示。这是一个创建示例,但您也可以进行更新。

StringAttributeMetadata stringAttribute = new StringAttributeMetadata
{
    // Set base properties
    SchemaName = "new_string",
    DisplayName = new Label("Sample String", _languageCode),
    RequiredLevel = new AttributeRequiredLevelManagedProperty(AttributeRequiredLevel.None),
    Description = new Label("String Attribute", _languageCode),
    // Set extended properties
    MaxLength = 100
};

CreateAttributeRequest createAttributeRequest = new CreateAttributeRequest
{
    EntityName = "contact",
    Attribute = stringAttribute 
};

serviceProxy.Execute(createAttributeRequest);

最后需要Publish Customizations,以便用户可以进行更改。

string layoutXml = @"<grid name='resultset' object='2' jump='name' select='1' preview='1' icon='1'>
    <row name='result' id='contactid'>
        <cell name='name' width='150' /> 
        <cell name='new_string' width='150' />
    </row>
</grid>";

string fetchXml = @"<fetch version='1.0' output-format='xml-platform' mapping='logical' distinct='false'>
    <entity name='contact'>
        <order attribute='new_string' descending='false' />
        <attribute name='new_string' />
        <attribute name='contactid' /> 
    </entity>
</fetch>";

SavedQuery sq = new SavedQuery
{
    Name = "A New Custom Public View",
    Description = "A Saved Query created in code",
    ReturnedTypeCode = "contact",
    FetchXml = fetchXml,
    LayoutXml = layoutXml,
    QueryType = 0
};

serviceProxy.Create(sq);

此代码未经测试,但是从示例链接拼凑在一起,所以应该可以正常工作。