我正在使用dynamic-crm处理mvc-5。在crm中,我有一个带状态代码的optionsetValue,其值为(publish,deactivate,draft)。现在我的第一个问题是如何在我的C#代码中设置这些值,默认情况下它应该是草稿。第二个是如何更改按钮单击时的状态代码值(例如,当我单击“发布”按钮时,状态应该更改为从草稿发布)。 下面是我在模型中的代码
[Microsoft.Xrm.Sdk.AttributeLogicalNameAttribute("statuscode")]
public Microsoft.Xrm.Sdk.OptionSetValue statuscode
{
get
{
return this.GetAttributeValue<Microsoft.Xrm.Sdk.OptionSetValue>("statuscode");
}
set
{
this.SetAttributeValue("statuscode", value);
}
}
[DisplayName("Status")]
[Display(Name = "Status")]
public string Status
{
get
{
if(statuscode == null)
{
OptionSetValue setValue = new OptionSetValue();
setValue.Value = 1;
return Status = "Draft";
}
return Status = statuscode.Value.ToString() == "1" ? "Publish" : "Draft";
}
set
{
}
}
提前致谢!!
答案 0 :(得分:1)
在Dynamics CRM
创建新记录时,我们是否指定。已设置StateCode
和StatusCode
的默认值。
因此,我们必须明确设置Status(statecode)
和Status Reason(statuscode)
。
以下是我在代码中使用的函数:
public static void SetStatus(string EntityName, Guid Id, int StateCode, int StatusCode)
{
try
{
if (Service == null)
throw GRID.CRM.ExceptionHandler.ExceptionUtil.GetException("Connection with CRM is Lost", typeof(Common), "SetStatus");
SetStateRequest StateRequest = new SetStateRequest();
StateRequest.EntityMoniker = new EntityReference(EntityName, Id);
StateRequest.State = new OptionSetValue(StateCode);
StateRequest.Status = new OptionSetValue(StatusCode);
SetStateResponse StateResponse = (SetStateResponse)Service.Execute(StateRequest);
}
catch (Exception ex)
{
throw GRID.CRM.ExceptionHandler.ExceptionUtil.GetException(ex, typeof(Common), "SetStatus");
}
}