[原文作者]:Beth Massi
[原文链接]:Integrate Outlook Appointments with SharePoint 2010 Calendar Lists using Data Services
一天, 我的一个朋友问我有没有可能发送一个在Outlook里创建的预约到SharePoint日历列表中. 这样的话, 我们通过使用Visual Studio 构建一个外接程序, 就变的非常简单的获取这些Outlook的数据. 我们知道, 使用内建的WCF数据服务发送消息到SharePoint是一件很容易的事情. 下面我就与你分享一下更新这些数据通过WCF服务.
创建Outlook外接程序和添加Sharepoint数据服务引用
我打算使用Visual Studio 2010创建一个Outlook 2010外接程序, 当然你也可以创建一个OutLook 2007 外接程序, 事实上, 你也可以使用Visual Studio 2008 来创建OutLook外接程序和访问数据服务, 你只需要保证你使用的是.Net 3.5或更高的版本.
文件->新建->项目, 选择Office 2010节点, 再选择OutLook 2010 外接程序. 我把这个事例命名为UpdateSharePointCalendar, 接下来我们要做的第一件事情是添加一个SharePoint 2010 数据服务引用到我们刚才新建的项目, 当然你也可以使用相同的方法添加一些其他的WCF数据服务. 在项目上单击右键, 选择添加服务引用, 如果你已经安装了SharePoint 2010, 你就可以通过向导的方式找到你想要的数据服务, 你可以通过这种方式http://<servername>/_vti_bin/ListData.svc来访问这些数据服务. 在我的本地的机器上已经安装了SharePoint 2010, 所有我使用这个地址: http://localhost/_vti_bin/ListData.svc并且把这个数据服务命名为 SPService.
一旦我们添加了这个服务引用, 客户端的实体类型将会自动生成, 并且这个程序集引用System.Data.Services.Client 也已经添加了. 所有的SharePoint 的服务, 方法和数据已经可以被客户端所调用. 我们可以打开数据协议展台来浏览这些数据类型. 只要你安装了数据协议展台, 你在数据服务SPService上单击右键然后选择”查看用图表的方式”, 展开实体类型, 然后把CalendarItem 拖到图表中查看他的属性, 你可以看到有很多字段是SharePoint私有的, 当然你也可以看到如Title, StartTime, EndTime 和Description是我们可以外部调用的.
添加窗体 Region 和Ribbon 到Outlook预约
现在我们已经添加了一些数据服务引用和一些界面元素, 对于这个例子, 我想显示一个并列的窗体当用户创建一个新的Outlook预约时, 并且所有的事件必须显示在SharePoint的日历中在那天. 我将使用一个简单的只读的Data Grid 在这个例子中, 但是它可以显示所有的东西在这里(尽管在过去我喜欢使用WPF控件), 当然我还需要添加一个按钮到Ribbon以至于用户可以单击它来发送预约信息到SharePoint日历列表.
我们在项目上单击右键选择添加-> 新建元素然后选择OutLook窗体Region, 我把它命名为AddToSharePoint, 单击添加, 下一步选择”设计一个新的窗体Region”, 下一步选择窗体Region的类型, 在这里, 对于并行的窗体, 我觉得把它命名为” SharePoint Calendar Events”.
在这个界面的底部,要求我们选择窗体区域的显示模式, 默认是三种模式都被选中, 如果我们添加这个窗体区域到邮件上, 这个区域应该需要显示, 因此, 只读面板, 分离组建和只读模式对于OutLook的预约来说是不需要的, 我们需要的是检测用户有没有创建一个新的预约在运行时. 点击下一步, 然后选择预约消息的类, 这个类将会关联到窗体区域, 最后点击完成按钮.
这个窗体区域仅仅是一个用户控件并且在这个例子中我们仅仅使用data grid来显示数据, 所有我想打开数据资源窗口(数据->显示数据资源)并且把Calendar拖到用户控件中, 这会为我们创建一个CalendarBindingSource并且会自动添加相应的数据绑定, 我们需要做的事情是设置CalendarBindingSource.DataSource的属性在代码中以至于我们的数据在Grid中可以显示. 接下来我们编辑我们想显示的列并且设置data grid 为只读属性.
现在我想添加一个Ribbon, 在项目上右键选择添加->新建项, 然后选择Ribbon并且单击添加按钮. 第一件我们要做的事情是把Ribbon关联到Outlook的预约, 我们要做的就是把Ribbon的属于RibbonType 设置为Microsoft.Outlook.App
通过上面的设置, 这个Ribbon按钮就应该会出现在我们新建的预约的第一个选项卡中, 为了做到这一点, 我们还需要了就OutLook的内部控制标识符, 在这个例子中, 你可以找到它在这个OutlookAppointmentItemControls.xlsx, 这里你也可以看到一个名字为TabAppointment 的主选项卡, 所有在我们Ribbon的设计器中选择选项卡然后在属性中设置ControlID 为TabAppointment.最后我们再从工具箱拖一个按钮到Group1命名为BtnSharePoint并且设置它的ControlSize 属性为Large. 这里我们还可以创建自己的照片, 但是我很懒, 所有我就用OutLook中已经存在的一个非常漂亮的图片作为我的照片. 内建图片的IDs是很容易找到的, 如果你用的是OutLook”自定义的Ribbon”, 你也可以从文件->选项中找到. 你只需要停留在你喜欢的照片上面, 在括号中你就会看到你要的IDs. 然后在”Ribbon”按钮的

很高深的东西。