0

我在汽车详细信息实体中有两个选择列表。我正在使用自定义工作流活动的输入参数(即 CrmNumber)设置模型(cir_model)选项列表值,它按预期工作,第二个选项列表Marque(cir_marque)将使用模型选项进行逻辑设置-列表。

逻辑应该是如果Model设置为“Ac Ace”,那么Marque应该设置为“Ac”。使用 Split() 从字符串 'Ac Ace' 中获取值 'Ac'。

通常在 C# 中这可以轻松完成,但在 CRM 4.0 中如何实现(我如何将“Ac”设置为 Marque)

在此处输入图像描述

public static DependencyProperty modelProperty = DependencyProperty.Register("model",  
typeof(int), typeof(CreateCardetails));
[CrmInput("Model")]
public int model
{
    get
    {
        return (int)base.GetValue(modelProperty);
    }
    set
    {
        base.SetValue(modelProperty, value);
    }
}

public static DependencyProperty ContactProperty =   
DependencyProperty.Register("Contact", typeof(Lookup), typeof(CreateCardetails));

[CrmInput("Contact ID")]
[CrmReferenceTarget("contact")]
public Lookup Contact
{
    get
    {
        return (Lookup)base.GetValue(ContactProperty);
    }
    set
    {

        base.SetValue(ContactProperty, value);
    }
}

protected override ActivityExecutionStatus Execute(ActivityExecutionContext  
executionContext)
{
        //Create an car details record which will be linked to the contact record
        DynamicEntity cardetails = new DynamicEntity("cir_cardetails");

        cardetails["cir_carsdetailsid"] = Contact;

        //Setting the picklist value of Model

         Picklist modelPickList = new Picklist();
         modelPickList.Value = model.Value;
         cardetails.Properties.Add(new PicklistProperty("cir_model",modelPickList));

  /*
      Here the logic should be done for setting Marque (cir_model) value 
         Picklist marquePickList = new Picklist();
         marquePickList.Value = ???
         cardetails.Properties.Add(new PicklistProperty("cir_marque",marquePickList));
  */

       //Creating the car details record
        Guid carkey = crmService.Create(cardetails);
}

我们如何在逻辑上设置Marque值,我将代码留空,如下所示

/*
      Here the logic should be done for setting Marque (cir_marque) value 
         Picklist marquePickList = new Picklist();
         marquePickList.Value = ???
         cardetails.Properties.Add(new PicklistProperty("cir_marque",marquePickList));    
*/

请安排帮助我解决这个问题,欢迎所有建议。

4

2 回答 2

1

CRM 4.0 没有语言,在 CRM 4.0 中您使用 c# 编写代码。唯一改变的是您使用新类型的方式。

在工作流中,您不使用控件,而是使用实体和相关属性。所以你“只”需要获取属性 cir_model,做一个子串并在 Marque 中找到可用的选项并设置正确的值。从 SDK检查此示例。

于 2013-04-07T08:12:10.627 回答
1

您可以使用 JavaScript 或 C#(插件、工作流)来完成此操作。在选择使用哪种方法时需要考虑一些因素。

如果您希望用户能够实时看到结果(当他们选择时),那么您可以使用 JavaScript。

如果您不希望用户看到结果,或者有来自外部来源(而不是用户表单)的数据,那么请考虑使用插件。

我认为您不必使用 WF 来执行此操作,插件同样易于编写,并且会立即发生,而不是等待异步过程完成。

于 2013-04-07T14:06:21.620 回答