【问题标题】:CSOM Sharepoint Document library List View Properties Selected ViewCSOM Sharepoint 文档库 列表视图 属性 选定视图
【发布时间】:2022-01-13 13:32:05
【问题描述】:

我正在尝试尽可能多地自动创建页面、子网站、文档库等,但我遇到了一些我被困了好几天的事情。

我找到了如何将文档库导入子站点以及如何通过 首先,我尝试从页面中获取所有 webpart 并找到属性,遗憾的是我的 WebPartDefinition 不包含任何属性或者...我没有看对的东西!

无论如何,我尝试使用以下命令添加 DL 的 ListView:

<webParts>
  <webPart xmlns="http://schemas.microsoft.com/WebPart/v3">
    <metaData>
      <type name="Microsoft.SharePoint.WebPartPages.XsltListViewWebPart, Microsoft.SharePoint, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" />
      <importErrorMessage>Cannot import this Web Part.</importErrorMessage>
    </metaData>
    <data>
      <properties>
        <property name="ListUrl" type="string">MyDocumentLibrary</property>
        <property name="ExportMode" type="exportmode">All</property>
        <property name="MissingAssembly" type="string">Cannot import this Web Part.</property>
      </properties>
    </data>
  </webPart>
</webParts>

我添加了属性“ExportMode”来尝试获取属性来设置视图。 事实上,我的文档库是一个模板,包含多个视图。我希望能够使用 CSOM 设置选定的视图。 我尝试导入 DL,显示 DL 的 webpart 列表,导出 webpart,导入相同的 XML,但选择的视图不正确。 我可能正在寻找错误的方向

有人遇到过同样的情况吗? 如何使用 CSOM 设置“选定视图”?

非常感谢!

【问题讨论】:

    标签: sharepoint view web-parts csom


    【解决方案1】:

    如果对某人有帮助,请自行回答!

    if (listOfViews.Contains(selectedView))
                    {
                        View viewTarget = list.Views.GetByTitle(selectedView);
                        context.Load(viewTarget);
                        context.ExecuteQuery();
                        Guid viewId = webPartDefinition.Id;
                        View view = list.Views.GetById(viewId);
                        ViewFieldCollection viewFieldcollection = viewTarget.ViewFields;
                        context.Load(viewFieldcollection);
                        context.ExecuteQuery();
                        view.ViewFields.RemoveAll();
                        foreach (string viewField in viewFieldcollection)
                        {
                            Microsoft.SharePoint.Client.Field field = list.Fields.GetByInternalNameOrTitle(viewField);
                            view.ViewFields.Add(viewField);
                        }
                        view.ViewQuery = viewTarget.ViewQuery;
                        view.RowLimit = viewTarget.RowLimit;
                        view.Update();
                        myExtranet.Context.ExecuteQuery();
                    }
    

    【讨论】:

    • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
    猜你喜欢
    • 1970-01-01
    • 2015-10-15
    • 1970-01-01
    • 2011-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-23
    相关资源
    最近更新 更多