是否可以在线将Sharepoint 2013表单数据提交到365列表?
使用SharePoint 2013中的数据连接或任何其他方法,是否可以在每次表单完成时将表单数据提交到外部登录位置,如SharePoint 365 online中的列表?我是SharePoint的新手,需要很快学会诀窍!谢谢你能提供的帮助是否可以在线将Sharepoint 2013表单数据提交到365列表?,sharepoint,sharepoint-2013,sharepoint-designer,Sharepoint,Sharepoint 2013,Sharepoint Designer,使用SharePoint 2013中的数据连接或任何其他方法,是否可以在每次表单完成时将表单数据提交到外部登录位置,如SharePoint 365 online中的列表?我是SharePoint的新手,需要很快学会诀窍!谢谢你能提供的帮助 祝你有一个美好的2020 您可以为SP 2013开发自定义Web部件或外接程序,并可以使用此项目的c#代码向SP Online添加项目 主要问题是您在SP OnPrem和SP online(OF365租户)中使用的身份验证模型。如果您有相同类型的授权提供程序(
祝你有一个美好的2020 您可以为SP 2013开发自定义Web部件或外接程序,并可以使用此项目的c#代码向SP Online添加项目 主要问题是您在SP OnPrem和SP online(OF365租户)中使用的身份验证模型。如果您有相同类型的授权提供程序(例如,在您使用adfs的两个地方),那么(作为同一个用户帐户)使用一些加载项或Web部件从OnPrem向Online提交一些数据应该没有多大问题,因为用户将在这两个地方进行身份验证。否则,您可以使用CSOM从OnPrem向Online提交一些数据,但您需要作为某个用户登录(以代码..如硬编码)。从安全角度来看,这不是最好的选择 是一个如何使用CSOM登录SP Online的示例(您可以在Web部件或加载项中执行非常类似的操作)
。。。所以这只是一些想法,但一般来说,首先要做这种逻辑,你需要弄清楚如何在OnPrem和Online之间进行身份验证。如果您使用“相同方式”进行身份验证,则只需创建SPOnline的上下文,然后使用用户权限添加/删除或更新项目。否则,您需要以某些用户身份向SPOnline进行身份验证以提交数据。如果您使用OOTB列表表单,我们可以创建事件接收者,并使用CSOM C#代码将新项目添加到SharePoint Online列表中。以下代码供您参考
using System;
using System.Security.Permissions;
using Microsoft.SharePoint;
using Microsoft.SharePoint.Utilities;
using System.Security;
using Microsoft.SharePoint.Client;
namespace SharePointProjectER.CustomListER
{
/// <summary>
/// List Item Events
/// </summary>
public class CustomListER : SPItemEventReceiver
{
/// <summary>
/// An item was added.
/// </summary>
public override void ItemAdded(SPItemEventProperties properties)
{
base.ItemAdded(properties);
if (properties.List.Title == "CL0106")
{
//add item to SharePoint Online list
string siteUrl = "https://tenant.sharepoint.com/sites/team";
string userName = "admin@tenant.onmicrosoft.com";
string password = "xxx";
var securePassword = new SecureString();
foreach (char c in password.ToCharArray()) securePassword.AppendChar(c);
var credential = new SharePointOnlineCredentials(userName, securePassword);
ClientContext clientContext = new ClientContext(siteUrl);
clientContext.Credentials = credential;
List oList = clientContext.Web.Lists.GetByTitle("CL0106");
ListItemCreationInformation itemCreateInfo = new ListItemCreationInformation();
ListItem oListItem = oList.AddItem(itemCreateInfo);
oListItem["Title"] = properties.ListItem["Title"];
oListItem.Update();
clientContext.ExecuteQuery();
}
}
}
}
使用系统;
使用System.Security.Permissions;
使用Microsoft.SharePoint;
使用Microsoft.SharePoint.Utilities;
使用系统安全;
使用Microsoft.SharePoint.Client;
命名空间SharePointProjectER.CustomListER
{
///
///列表项事件
///
公共类CustomListER:SPItemEventReceiver
{
///
///添加了一个项目。
///
添加了公共覆盖无效项(SPItemEventProperties属性)
{
基本。添加的项目(属性);
如果(properties.List.Title==“CL0106”)
{
//将项目添加到SharePoint Online列表
字符串siteUrl=”https://tenant.sharepoint.com/sites/team";
字符串用户名=”admin@tenant.onmicrosoft.com";
字符串密码=“xxx”;
var securePassword=new SecureString();
foreach(password.ToCharArray()中的字符c)securePassword.AppendChar(c);
var-credential=新的SharePointOnlineCredentials(用户名、安全密码);
ClientContext=新的ClientContext(siteUrl);
clientContext.Credentials=凭证;
List-oList=clientContext.Web.Lists.GetByTitle(“CL0106”);
ListItemCreationInformation itemCreateInfo=新建ListItemCreationInformation();
ListItem oListItem=oList.AddItem(itemCreateInfo);
oListItem[“Title”]=properties.ListItem[“Title”];
Update();
clientContext.ExecuteQuery();
}
}
}
}
或者,我们可以使用自定义表单或外接程序创建自定义web部件作为Adam的回复,并使用CSOM C#代码来实现它
参考: