DevExpress WinForms Scheduler组件中文教程 - 如何与Office 365双向同步?

news2024/12/25 11:48:18

随着DevExpress WinForms最近的更新,用户可以无缝同步DevExpress WinForms Scheduler与Office 365事件/日程的数据。您可以将用户日程从WinForms Scheduler中导出到Office 365日历,或将Office 365事件/日程导入到Scheduler控件。在同步钱修改用户事件/日程,将用户日程与Microsoft 365日历合并,解决合并冲突,并将更改保存到数据库中。

DevExpress WinForms Scheduler组件中文教程 - 如何与Office 365双向同步?

DevExpress WinForms 拥有180+组件和UI库,能为Windows Forms平台创建具有影响力的业务解决方案。DevExpress WinForms能完美构建流畅、美观且易于使用的应用程序,无论是Office风格的界面,还是分析处理大批量的业务数据,它都能轻松胜任!

获取DevExpress v23.1正式版下载(Q技术交流:523159565)

必需的依赖项

安装以下依赖库(NuGet包):

  • Azure.Identity 1.8.0+
  • HtmlAgilityPack 1.11.46+
  • Microsoft.Graph 4.49.0+
入门指南

将WinForms Scheduler控件放到窗体上,打开其智能标签菜单并选择"Sync with Microsoft 365 Calendar",这将创建DXOutlook365Sync组件。

DevExpress WinForms Scheduler组件中文教程 - 如何与Office 365双向同步?

合并基本数据字段和设置自定义映射

如果您需要在应用程序和Microsoft Office 365日历同步之后保存对数据库的更改,DXOutlook365Sync组件需要五个特定字段(在您的数据源中)来存储Microsoft 365事件的唯一标识符并记录用户事件/约会的最后修改日期。

DataTable source = new DataTable();
source.Columns.AddRange(new DataColumn[] {
new DataColumn("Subject", typeof(string)),
new DataColumn("Description", typeof(string)),
new DataColumn("Start", typeof(DateTime)),
new DataColumn("End", typeof(DateTime)),
// Special data fields.
new DataColumn("Outlook365CalendarId", typeof(string)),
new DataColumn("Outlook365EventId", typeof(string)),
new DataColumn("Outlook365EventUniqId", typeof(string)),
new DataColumn("Outlook365LastChangedUTC", typeof(DateTime)),
new DataColumn("SchedulerLastChangedUTC", typeof(DateTime))
});

定义到这些字段的自定义映射,来完成数据源设置。

// Defines custom mappings.
schedulerDataStorage1.Appointments.CustomFieldMappings.Add(new AppointmentCustomFieldMapping("outlook365_calendar_id", "Outlook365CalendarId"));
schedulerDataStorage1.Appointments.CustomFieldMappings.Add(new AppointmentCustomFieldMapping("outlook365_event_id", "Outlook365EventId"));
schedulerDataStorage1.Appointments.CustomFieldMappings.Add(new AppointmentCustomFieldMapping("outlook365_event_ICalUId", "Outlook365EventUniqId"));
schedulerDataStorage1.Appointments.CustomFieldMappings.Add(new AppointmentCustomFieldMapping("outlook365_lastChangedUTC", "Outlook365LastChangedUTC"));
schedulerDataStorage1.Appointments.CustomFieldMappings.Add(new AppointmentCustomFieldMapping("scheduler_lastChangedUTC", "SchedulerLastChangedUTC"));
初始化同步API

在使用DXOutlook365Sync组件的API之前,必须初始化它,使用它的InitAsync()方法,此方法打开"Sign in to your account"窗口(需要登录Microsoft Office 365)。

DevExpress WinForms Scheduler组件中文教程 - 如何与Office 365双向同步?

private async void initBarButtonItem_ItemClick(object sender, ItemClickEventArgs e) {
await dxOutlook365Sync1.InitAsync();
}
选择要同步的Microsoft 365日历

DXOutlook365Sync组件可以将WinForms Scheduler控件中的用户日程与所有(或特定)Office 365日历中的事件同步,它的日历集合包含与Office365日历对应的OutlookCalendarItem对象。

日历具有OutlookCalendarItem.EnableSynchronization设置,该设置指定是否将其事件与WinForms Scheduler控件中的用户日程同步。

导入Microsoft 365事件

使用ImportOutlookToSchedulerAsync(Boolean)方法将Office 365日历中的事件导入到WinForms Scheduler控件中。

using DevExpress.XtraScheduler.Microsoft365Calendar;

private async void importEventsButton_Click(object sender, EventArgs e) {
// Checks whether the initialization of 'dxOutlook365Sync1' failed.
if(!await InitOutlook365Sync(dxOutlook365Sync1)) return;
// Displays the wait form.
splashScreenManager1.ShowWaitForm();
// Imports Outlook 365 events to the Scheduler control.
await dxOutlook365Sync1.ImportOutlookToSchedulerAsync(false);
// Hides the wait form.
splashScreenManager1.CloseWaitForm();
}
private async Task<bool> InitOutlook365Sync(DXOutlook365Sync outlook365sync) {
// Initializes the 'dxOutlook365Sync1' component.
InitStatus status = await outlook365sync.InitAsync();
// Returns false and displays a message box if the initialization of 'dxOutlook365Sync1' failed.
if(status == InitStatus.Error) {
XtraMessageBox.Show("Initialization of DXOutlook365Sync failed.", "Error", MessageBoxButtons.OK);
return false;
}
return true;
}
导出用户日程到Microsoft 365日历中

使用ExportSchedulerToOutlookAsync(Boolean)方法从DevExpress Scheduler控件导出用户日程到Office 365日历。

自定义同步前的日程或事件

以下事件允许您在同步之前自定义用户日程或事件:

  • CustomizeAppointmentToEvent
  • CustomizeEventToAppointment
合并日历和解决合并冲突

DXOutlook365Sync API允许您将用户日程与Office 365事件合并,您可以合并所有事件/日程,也可以定义跳过某些事件/日程的规则(基于特定条件)。

同步API允许您根据需要轻松解决合并冲突。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/796309.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

前端高德地图注册、项目中引入、渲染标记(Marker)and覆盖物(Circle)

首先说明一下&#xff0c;下面的流程只是个人摸索and看文档梳理出来的&#xff0c;并不作为完全正确的流程。 首先&#xff0c;注册 高德开放平台 没有注册的可以点击右上角点击注册&#xff1b; 我们点个人的就ok&#xff1b; 信息完善之后我们到控制台&#xff0c;点击 应…

{“msg“:“invalid token“,“code“:401}

项目场景&#xff1a; 提示&#xff1a;这里简述项目相关背景&#xff1a; {“msg“:“invalid token“,“code“:401} 前端请求 后端接口时&#xff0c; 请求失败&#xff0c;控制台出现如下所示报错信息 问题描述 问题&#xff1a; 控制台报错信息如下所示&#xff1a; …

【基于FFT的自由响应非线性检测方案】使用归零早期FFT的非线性检测研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

BPF之路

前言 BPF是内核中的顶级模块, 十分精妙, 相关书籍有限, 而且还都是从应用的视角看待BPF的, 我想写一系列文章, 从一个安全研究员的视角观察BPF, 以帮助更多的人学习和研究 linux内核观测技术一书中, 利用源码树中已有的包裹函数作为入门的例子, 层层包装导致编译时依赖繁多, …

【Nodejs】文件上传

1.初始化准备 1.1 安装依赖 首先创建一个express-multer-upload工程项目&#xff0c;然后在项目中下好各种依赖包。 multer中间件 Multer 是一个 node.js 中间件&#xff0c;用于处理 multipart/form-data 类型的表单数据&#xff0c;它主要用于上传文件。 注意: Multer 不会…

javafx实现自定义的数据拖拽

效果 代码 package cn.juhe.zjsb.test;import javafx.application.Application; import javafx.event.EventHandler; import javafx.scene.Scene; import javafx.scene.SnapshotParameters; import javafx.scene.control.Button; import javafx.scene.control.TextField; impo…

php-golang-rpc jsonrpc和php客户端tivoka/tivoka包实践

golang 代码&#xff1a; package main import ( "fmt" "net" "net/rpc" "net/rpc/jsonrpc" ) type App struct{} type Res struct { Code int json:"code" Msg string json:"msg" Data any json:"…

什么是边缘 AI?

边缘 AI 使设备能够更快地做出更明智的决策&#xff0c;而无需连接到云或异地数据中心。 边缘 AI 是在边缘计算环境中实现人工智能&#xff0c;它允许在实际创建数据的位置附近进行计算&#xff0c;而不是在集中式云计算设施或异地数据中心进行计算。 这种本地化处理允许设备在…

帆软报表设计器设置步骤

1、连接工作目录&#xff08;可以是远程服务器&#xff09; 2、在打开的界面中设置具体的远程地址 3、 一个报表文件可以有多个数据集、但是数据集依附于报表文件的存在&#xff0c;不能跨报表共享。 4、查询条件区域的字段&#xff0c;可以在数据源的对应 SQL 中用一对${ }包裹…

基于java+swing+mysql图书管理系统v8.0

基于javaswingmysql图书管理系统v8.0 一、系统介绍二、功能展示1.登陆及主页2.图书类别添加3.图书类别维护4.图书添加5.图书维护 三、系统实现1.BookManageMainFrame.java 四、其它1.其他系统实现 五、获取源码 一、系统介绍 该系统实现了用户登陆、图书类别管理(图书类别添加…

消息中间件ActiveMQ介绍

一、消息中间件的介绍 介绍 ​ 消息队列 是指利用 高效可靠 的 消息传递机制 进行与平台无关的 数据交流&#xff0c;并基于 数据通信 来进行分布式系统的集成。 特点(作用) 应用解耦 异步通信 流量削峰 (海量)日志处理 消息通讯 …... 应用场景 根据消息队列的特点&a…

用VMware给运行在VMware上的CentOS7生成一个以SSH方式连接VMware上的CentOS7的运行在Windows上的命令行窗口

2023年7月27日&#xff0c;周四早上 目录 一个发现生成方法如果上面的方法连接失败&#xff0c;就采取这个方法 一个发现 今天早上无意间发现VMware可以生成一个以SSH方式连接着CentOS7的Windows命令行窗口&#xff0c; 这样做可以带来一定的便利性 &#xff1a; 方便复制、…

Vue 中通用的 css 列表入场动画效果

css 代码 .gradientAnimation {animation-name: gradient;animation-duration: 0.85s;animation-fill-mode: forwards;opacity: 0; }/* 不带前缀的放到最后 */ keyframes gradient {0% {opacity: 0;transform: translate(-100px, 0px);}100% {opacity: 1;transform: translate…

ant-design-vue开始时间和结束时间的正则校验

<a-row><a-col :span"12"><a-form-model-item label"开始日期" :label-col"{span:8}" :wrapper-col"{span:14}" prop"tzgg0112"><template v-if"!readOnly"><a-date-picker change&q…

如何运用R语言进行Meta分析与【文献计量分析、贝叶斯、机器学习等】多技术融合实践与拓展

Meta分析是针对某一科研问题&#xff0c;根据明确的搜索策略、选择筛选文献标准、采用严格的评价方法&#xff0c;对来源不同的研究成果进行收集、合并及定量统计分析的方法&#xff0c;最早出现于“循证医学”&#xff0c;现已广泛应用于农林生态&#xff0c;资源环境等方面。…

QT JSON数据格式讲解

文章目录 前言一、JSON是什么二、JSON在线解析三、QT中的JSON类四、构建JSON字符串五、解析JSON数据六.核心类QJsonDocument 类详解总结 前言 本篇文章开始带大家学习一下什么是JSON&#xff0c;并且学习QT当中的JSON使用。 一、JSON是什么 JSON&#xff08;JavaScript Obje…

【Vioovi】如何实现企业精益生产,探索精益生产的工具与方法

说起精益生产&#xff0c;相信很多朋友都会率先想到丰田&#xff0c;作为精益生产的鼻祖&#xff0c;精益生产一词最早便是由丰田传出的&#xff0c;是由其独特的生产方式衍生而来的一种现代管理哲学。如今&#xff0c;众多的知名企业以及知名院校都对其投入了大量的研究&#…

【C#】并行编程实战:并行编程中的模式

本章将介绍并行编程模式&#xff0c;重点是理解并行代码问题场景并使用并行编程/异步技术解决他们。本章会介绍几种最重要的编程模式。 本教程学习工程&#xff1a;魔术师Dix / HandsOnParallelProgramming GitCode 1、MapReduce 模式 引入 MapReduce 是为了解决处理大数据的问…

2023年大厂秋季校招整理

&#x1f430;首先声明这篇文章主要整理的是音视频领域的 下面这些是联想的校园招聘 视频编解码 所属部门&#xff1a;IDG 工作地点&#xff1a;北京 岗位职责 1.视频编解码的算法研究&#xff1b; 2.编解码系统的架构设计与实现&#xff1b; 3.视频编解码算法优化工作。 任…

ArrayList扩容原理,源码追踪(jdk8)

ArrayList 扩容原理 add方法&#xff08;扩容机制jdk8&#xff09; 写一个代码案例断点调试 package list;import java.util.ArrayList;/*** author 兰舟千帆* version 1.0* date 2023/7/26 19:08* Description 功能描述:案例断点查看ArrayList的源码(添加)*/ public class Ar…