Microsoft.SharePoint.Client 在线字段类型映射

Microsoft.SharePoint.Client Online FieldType Mapping

我正在尝试将值推送到 SharePoint Online 列表中。 几个问题:

  1. 如果我使用 SharePoint 在线结构创建此代码,它是否也适用于拥有自己的本地服务器的公司?还是我必须创建一个全新的代码库来支持它?似乎 SPFieldTypeFieldType 之间存在一些很大的差异,或者代码是否自动进行了更改?
  2. 在映射 FieldType 中,我正在寻找一些参考或代码来解释各种字段类型的正确映射。我看过姐妹产品 SharePoint 2013 的这些,例如:

https://social.technet.microsoft.com/wiki/contents/articles/21801.sharepoint-a-complete-guide-to-getting-and-setting-fields-using-c.aspx

但是2013年的SPFieldTypeMicrosoft.SharePoint.Client.FieldType之间的差异似乎比较大。是否有相应的内容描述每个字段类型需要什么才能使值在 FieldType 中成功?

这是我现有代码的示例,以及我仍然缺少的代码:

       public string ToString(Microsoft.SharePoint.Client.FieldType ColumnType)
    {
        switch (ColumnType)
        {
            case Microsoft.SharePoint.Client.FieldType.Boolean:
                // 0 or 1, or "true" or "false"???
                break;
            case Microsoft.SharePoint.Client.FieldType.Calculated:
                // No idea!
                break;
            case Microsoft.SharePoint.Client.FieldType.Choice:
                // No idea!
                break;
            case Microsoft.SharePoint.Client.FieldType.Computed:
                // No idea!
                break;
            case Microsoft.SharePoint.Client.FieldType.Currency:
                // No idea!
                break;
            case Microsoft.SharePoint.Client.FieldType.DateTime:
                return GetDateTimeValue().ToString("yyyy-MM-dd");

            case Microsoft.SharePoint.Client.FieldType.File:
                // No idea!
                break;
            case Microsoft.SharePoint.Client.FieldType.GridChoice:
                // No idea!
                break;
            case Microsoft.SharePoint.Client.FieldType.Guid:
                // No idea!
                break;
            case Microsoft.SharePoint.Client.FieldType.Integer:
                return GetIntValue().ToString(); 

            case Microsoft.SharePoint.Client.FieldType.Lookup:
                // No idea!
                break;
            case Microsoft.SharePoint.Client.FieldType.MultiChoice:
                // No idea!
                break;
            case Microsoft.SharePoint.Client.FieldType.Note:
                return GetStringValue();
            case Microsoft.SharePoint.Client.FieldType.Number:
                return GetDoubleValue().ToString();
            case Microsoft.SharePoint.Client.FieldType.Text:
                return GetStringValue();
            case Microsoft.SharePoint.Client.FieldType.User:
                // No idea!
                break;
            case Microsoft.SharePoint.Client.FieldType.URL:
                // No idea!
                break;
            // No Idea what to do for these
            case Microsoft.SharePoint.Client.FieldType.WorkflowEventType:
            case Microsoft.SharePoint.Client.FieldType.WorkflowStatus:
            case Microsoft.SharePoint.Client.FieldType.AllDayEvent:
            case Microsoft.SharePoint.Client.FieldType.Attachments:
            case Microsoft.SharePoint.Client.FieldType.ThreadIndex:
            case Microsoft.SharePoint.Client.FieldType.Threading:
            case Microsoft.SharePoint.Client.FieldType.PageSeparator:
            case Microsoft.SharePoint.Client.FieldType.Recurrence:
            case Microsoft.SharePoint.Client.FieldType.Invalid:
            case Microsoft.SharePoint.Client.FieldType.ContentTypeId:
            case Microsoft.SharePoint.Client.FieldType.Counter:
            case Microsoft.SharePoint.Client.FieldType.CrossProjectLink:
            case Microsoft.SharePoint.Client.FieldType.MaxItems:
            case Microsoft.SharePoint.Client.FieldType.ModStat:
            case Microsoft.SharePoint.Client.FieldType.Error:
                break;
            default:
                return GetStringValue();
        }
        return GetStringValue();
    }

缺少的方法只是将我的数据中的值转换为适当的字符串。

服务器对象模型和 .NET 客户端对象模型不同。 如果您想将值推送到 SharePoint Online 列表中,我建议您使用 Pnp-PowerShell 来实现它。

Add-PnPListItem

关于字段类型,请查看GetField中的代码。

如果您不想使用Pnp-PowerShell,您需要将服务器对象模型代码转换为客户端对象模型代码。