目前,我有一个已分配自定义表单的Exchange公用文件夹。表单上的许多用户定义字段之一设置为货币。出于某种原因,无论我做什么,我都无法实际设置货币字段。
我创建了一个单独的文件夹和简单的自定义表单,其中一个字段的类型为Currency,如下所示:
然后我可以创建Post Item并将其保存到已分配测试自定义表单的文件夹中,但遗憾的是我似乎无法设置TestCurrency扩展属性:
var JobsSearchFilter =
new SearchFilter.IsEqualTo(FolderSchema.DisplayName, JobsFolderName);
var JobsFolder =
service.FindFolders(WellKnownFolderName.PublicFoldersRoot, JobsSearchFilter, new FolderView(1)).Single();
var JobsSearchFilter =
new SearchFilter.IsEqualTo(FolderSchema.DisplayName, jobFolderName);
var ewsFolderUniqueId =
JobsFolder.FindFolders(JobsSearchFilter, new FolderView(1)).Single().Id;
var postItem = new PostItem(service)
{
ItemClass = "IPM.Post.EWSTestingForm",
Subject = "Testing Custom Forms"
};
postItem.SetExtendedProperty
(new ExtendedPropertyDefinition
(DefaultExtendedPropertySet.PublicStrings,
"TestText",
MapiPropertyType.String), "TestTextValue");
postItem.SetExtendedProperty
(new ExtendedPropertyDefinition(
DefaultExtendedPropertySet.PublicStrings,
"TestCurrency",
MapiPropertyType.Currency), 1200.000);
postItem.Save(ewsFolderUniqueId);
货币扩展属性字段需要特殊处理吗?所有其他字段似乎都有用(文本,布尔等)
有趣的是,当我进行更多调查时,事实证明MapiPropertyType.Currency的扩展属性正在发布到Exchange Server,因为我可以立即检索它,但自定义表单不会获取值。它似乎是它没有提起它的原因是因为EWS创建了PT_I8类型的扩展属性而不是PT_CURRENCY(通过OutlookSpy得到那些)。很可能是EWS中的一个错误是将MapiPropertType.Currency映射到正确的Exchange mapi类型...
Extended Properties set via EWS vs User Input in Custom Form