使用C#修改Sharepoint中的ows_MetaInfo

时间:2016-04-19 17:19:27

标签: c# sharepoint outlook

如果您在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用户可以看到颜色编码的日历条目。

任何帮助都会得到极大的赞赏!

1 个答案:

答案 0 :(得分:1)

我一直在寻找相当长的时间来解决这个问题,我忽略了最明显的答案...... :)我所要做的就是寻求帮助让我最终弄明白!哈哈:D

MetaInfo只是另一个String字段。当您在Outlook中将颜色更改为SharePoint附加日历项时,只需在该字段中添加指定颜色的文本以及其他一些默认项。要更改颜色,您只需使用类似cListItem["MetaInfo"] = "Categories:SW|Red Category\r\n";的内容指定颜色,它就会更改“类别”字段,而只保留其他字段。

为了完整起见,我将发布我的整个测试示例。 (因为当我找到问题的答案时我讨厌它,但只有部分答案被发布,让我猜测代码中的其他内容使示例实际工作:))

这是使用控制台应用程序

完成的VS2013
using 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。