如果您在MS Outlook中查看SharePoint日历并更改Outlook中该项目的颜色,则SharePoint ows_MetaInfo会从此更改:
2362;#
到此:
2362;#vti_encoding:SR|utf8-nl
FollowUp:SW|
vti_serverversion:SW|2
vti_versionhistory:SW|473e1c0c47cf034d9969c8513def1903:4
vti_clientversion:SW|4
BusyStatus:SW|2
Categories:SW|Red Category
Priority:SW|
IntendedBusyStatus:SW|
vti_externalversion:IW|3
我有一个创建SP日历条目的C#程序,但我希望能够修改此ows_MetaInfo Categories属性,以便我可以对这些项目进行颜色编码,以便在Outlook中查看此项目的用户将看到这些颜色代码。 / p>
我已经搜索了我能做的所有事情。我已经看到人们阅读这个ows_MetaInfo数据,但没有说明如何更改它。如前所述,我在C#中执行此操作,并且我想更改ows_MetInfo Categories属性,以便Outlook用户可以看到颜色编码的日历条目。
任何帮助都会得到极大的赞赏!
答案 0 :(得分:1)
我一直在寻找相当长的时间来解决这个问题,我忽略了最明显的答案...... :)我所要做的就是寻求帮助让我最终弄明白!哈哈:D
MetaInfo只是另一个String字段。当您在Outlook中将颜色更改为SharePoint附加日历项时,只需在该字段中添加指定颜色的文本以及其他一些默认项。要更改颜色,您只需使用类似cListItem["MetaInfo"] = "Categories:SW|Red Category\r\n";
的内容指定颜色,它就会更改“类别”字段,而只保留其他字段。
为了完整起见,我将发布我的整个测试示例。 (因为当我找到问题的答案时我讨厌它,但只有部分答案被发布,让我猜测代码中的其他内容使示例实际工作:))
这是使用控制台应用程序
完成的VS2013using Microsoft.SharePoint.Client;
using SP = Microsoft.SharePoint.Client;
using System.Net;
namespace SharePointSetMetaInfo
{
class Program
{
static void Main(string[] args)
{
using (ClientContext context = new ClientContext("https://mySharePointServer/sites/MySite/"))
{
context.Credentials = new NetworkCredential("myUserName", "myPassword", "MYDOMAIN");
SP.List calendarList = context.Web.Lists.GetByTitle("Calendar");
ListItem cListItem = calendarList.GetItemById(2301);//This is one way to retrieve an item for update. You can also use a Caml Query
context.Load(cListItem);
cListItem["MetaInfo"] = "Categories:SW|Red Category\r\n";
cListItem.Update();
context.ExecuteQuery();
}
}
}
}
希望这可以帮助那些尝试以编程方式更改SharePoint日历项目中显示在Outlook中的颜色的其他人。这不适用于SharePoint日历项在SharePoint中的显示方式,仅适用于Outlook。