SharePoint 隐藏Add New Item

本文介绍了在SharePointList和Document上隐藏AddNewItem按钮的两种方法:通过权限设置和CSS样式。详细解释了如何通过权限控制使用户仅能查看隐藏按钮,并提供了使用WebPart隐藏按钮的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SharePoint List和Document上都有Add New Item 隐藏这个按钮有两个办法

1.通过权限设置隐藏,设置后要有权限的用户才可以看到

2.通过css样式隐藏 ,如下:

<style>
    td.ms-addnew { display:none; }
</style>
写一个WebPart然后将WebPart加进一个页面里面,这个页面的Add New Item就会被隐藏了,而且对其他页面没有影响


sharepoint操作技巧 查找找到将SharePoint:SiteActions和span放在<Sharepoint:SPSecurityTrimmedControl即可。 查找搜索</SharePoint:SiteActions></span>上面一直到<span class="ms-siteactionsmenu" id="siteactiontd"> 剪切 如下内容: <span class="ms-siteactionsmenu" id="siteactiontd"> <SharePoint:SiteActions runat="server" accesskey="<%$Resources:wss,tb_SiteActions_AK%>" id="SiteActionsMenuMain" PrefixHtml="" SuffixHtml="" MenuNotVisibleHtml="&nbsp;" PermissionsString="EditListItems, AddAndCustomizePages"<BR> <BR>PermissionMode="All"> <CustomTemplate> <SharePoint:FeatureMenuTemplate runat="server" FeatureScope="Site" Location="Microsoft.SharePoint.StandardMenu" GroupId="SiteActions" UseShortId="true" > <SharePoint:MenuItemTemplate runat="server" id="MenuItem_EditPage" Text="<%$Resources:wss,siteactions_editpage%>" Description="<%$Resources:wss,siteactions_editpagedescriptionv4%>" ImageUrl="/_layouts/images/ActionsEditPage.png" MenuGroupId="100" Sequence="110" ClientOnClickNavigateUrl="javascript:ChangeLayoutMode(false);" /> <SharePoint:MenuItemTemplate runat="server" id="MenuItem_TakeOffline" Text="<%$Resources:wss,siteactions_takeoffline%>" Description="<%$Resources:wss,siteactions_takeofflinedescription%>" ImageUrl="/_layouts/images/connecttospworkspace32.png" MenuGroupId="100" Sequence="120" /> <SharePoint:MenuItemTemplate runat="server" id="MenuItem_CreatePage" Text="<%$Resources:wss,siteactions_createpage%>" Description="<%$Resources:wss,siteactions_createpagedesc%>" ImageUrl="/_layouts/images/NewContentPageHH.png" MenuGroupId="200" Sequence="210" UseShortId="true" ClientOnClickScriptContainingPrefixedUrl="if (LaunchCreateHandler('Page')) { OpenCreateWebPageDialog('~site/_layouts/createwebpage.aspx') }" PermissionsString="AddListItems, EditListItems" PermissionMode="All" /> <SharePoint:MenuItemTemplate runat="server" id="MenuItem_CreateDocLib" Text="<%$Resources:wss,siteactions_createdoclib%>" Description="<%$Resources:wss,siteactions_createdoclibdesc%>" ImageUrl="/_layouts/images/NewDocLibHH.png" MenuGroupId="200" Sequence="220" UseShortId="true" ClientOnClickScriptContainingPrefixedUrl="if (LaunchCreateHandler('DocLib')) { GoToPage('~site/_layouts/new.aspx?FeatureId={00bfea71-e717-4e80-aa17-d0c71b360101}&ListTemplate=101') }" PermissionsString="ManageLists" PermissionMode="Any" VisibilityFeatureId="00BFEA71-E717-4E80-AA17-D0C71B360101" /> <SharePoint:MenuItemTemplate runat="server" id="MenuItem_CreateSite" Text="<%$Resources:wss,siteactions_createsite%>" Description="<%$Resources:wss,siteactions_createsitedesc%>" ImageUrl="/_layouts/images/newweb32.png" MenuGroupId="200" Sequence="230" UseShortId="true" ClientOnClickScriptContainingPrefixedUrl="if (LaunchCreateHandler('Site')) { STSNavigate('~site/_layouts/newsbweb.aspx') }" PermissionsString="ManageSubwebs,ViewFormPages" PermissionMode="All" /> <SharePoint:MenuItemTemplate runat="server" id="MenuItem_Create" Text="<%$Resources:wss,siteactions_create%>" Description="<%$Resources:wss,siteactions_createdesc%>" MenuGroupId="200" Sequence="240" UseShortId="true" ClientOnClickScriptContainingPrefixedUrl="if (LaunchCreateHandler('All')) { STSNavigate('~site/_layouts/create.aspx') }" PermissionsString="ManageLists, ManageSubwebs" PermissionMode="Any" /> <SharePoint:MenuItemTemplate runat="server" id="MenuItem_ViewAllSiteContents" Text="<%$Resources:wss,quiklnch_allcontent%>" Description="<%$Resources:wss,siteactions_allcontentdescription%>" ImageUrl="/_layouts/images/allcontent32.png" MenuGroupId="300" Sequence="302" UseShortId="true" ClientOnClickNavigateUrl="~site/_layouts/viewlsts.aspx" PermissionsString="ViewFormPages" PermissionMode="Any" /> <SharePoint:MenuItemTemplate runat="server" id="MenuItem_EditSite" Text="<%$Resources:wss,siteactions_editsite%>" Description="<%$Resources:wss,siteactions_editsitedescription%>" ImageUrl="/_layouts/images/SharePointDesigner32.png" MenuGroupId="300" Sequence="304" UseShortId="true" ClientOnClickScriptContainingPrefixedUrl="EditInSPD('~site/',true);" PermissionsString="AddAndCustomizePages" PermissionMode="Any" /> <SharePoint:MenuItemTemplate runat="server" id="MenuItem_SitePermissions" Text="<%$Resources:wss,people_sitepermissions%>" Description="<%$Resources:wss,siteactions_sitepermissiondescriptionv4%>" ImageUrl="/_layouts/images/Permissions32.png" MenuGroupId="300" Sequence="310" UseShortId="true" ClientOnClickNavigateUrl="~site/_layouts/user.aspx" PermissionsString="EnumeratePermissions" PermissionMode="Any" /> <SharePoint:MenuItemTemplate runat="server" id="MenuItem_Settings" Text="<%$Resources:wss,settings_pagetitle%>" Description="<%$Resources:wss,siteactions_sitesettingsdescriptionv4%>" ImageUrl="/_layouts/images/settingsIcon.png" MenuGroupId="300" Sequence="320" UseShortId="true" ClientOnClickNavigateUrl="~site/_layouts/settings.aspx" PermissionsString="EnumeratePermissions,ManageWeb,ManageSubwebs,AddAndCustomizePages,ApplyThemeAndBorder,ManageAlerts,ManageLists,ViewUsageData" PermissionMode="Any" /> <SharePoint:MenuItemTemplate runat="server" id="MenuItem_CommitNewUI" Text="<%$Resources:wss,siteactions_commitnewui%>" Description="<%$Resources:wss,siteactions_commitnewuidescription%>" ImageUrl="/_layouts/images/visualupgradehh.png" MenuGroupId="300" Sequence="330" UseShortId="true" ClientOnClickScriptContainingPrefixedUrl="GoToPage('~site/_layouts/prjsetng.aspx')" PermissionsString="ManageWeb" PermissionMode="Any" ShowOnlyIfUIVersionConfigurationEnabled="true" /> </SharePoint:FeatureMenuTemplate> </CustomTemplate> </SharePoint:SiteActions></span> 搜索<Sharepoint:SPSecurityTrimmedControl 这个把剪切的放到里面
<think>我们正在讨论使用Vue3开发与SharePoint集成的应用。根据引用,特别是引用[3]中提到了在浏览器中预览Office文件的方法,以及引用[1]和[4]中提到的AutoVue集成方案(虽然AutoVue是一个独立的文档查看解决方案,但我们可以借鉴其集成思想),我们可以探讨如何利用Vue3来实现与SharePoint的集成。 主要考虑以下几个方面: 1. 如何在Vue3应用中访问SharePoint数据(如表、文档库)? 2. 如何在Vue3应用中实现Office文件的在线预览? 3. 如何利用SharePoint Framework (SPFx) 来集成Vue3组件? ### 一、Vue3访问SharePoint数据 SharePoint提供了REST API和Graph API,我们可以使用Vue3中的HTTP客户端(如axios)来调用这些API。 #### 示例:获取SharePoint表数据 首先,需要获取访问令牌(access token)。我们可以使用MSAL(Microsoft Authentication Library)库进行认证。 ```typescript // 安装依赖:npm install @azure/msal-browser import { PublicClientApplication } from '@azure/msal-browser'; const msalConfig = { auth: { clientId: '你的应用ID', authority: 'https://login.microsoftonline.com/你的租户ID', redirectUri: 'http://localhost:8080' } }; const msalInstance = new PublicClientApplication(msalConfig); // 登录并获取令牌 async function loginAndGetToken() { try { const loginResponse = await msalInstance.loginPopup({ scopes: ['https://yourtenant.sharepoint.com/.default'] // 根据实际需要调整scope }); const tokenResponse = await msalInstance.acquireTokenSilent({ account: loginResponse.account, scopes: ['https://yourtenant.sharepoint.com/.default'] }); return tokenResponse.accessToken; } catch (error) { console.error(error); } } ``` 然后,使用获取到的令牌调用SharePoint REST API: ```typescript import axios from 'axios'; async function getSharePointListData() { const accessToken = await loginAndGetToken(); const siteUrl = 'https://yourtenant.sharepoint.com/sites/yoursite'; const listName = 'TestList'; const apiUrl = `${siteUrl}/_api/web/lists/getbytitle('${listName}')/items?$select=Title,Id`; try { const response = await axios.get(apiUrl, { headers: { 'Authorization': `Bearer ${accessToken}`, 'Accept': 'application/json;odata=verbose' } }); return response.data.d.results; } catch (error) { console.error('Error fetching list data:', error); } } ``` ### 二、Office文件在线预览 引用[3]提供了两种方法: 1. 使用Office Web Viewer(微软官方提供的在线预览服务) 2. 使用XDOC文档预览云服务(第三方) #### 方法1:Office Web Viewer 在Vue3中,我们可以这样实现: ```vue <template> <div> <button @click="previewFile">预览文件</button> </div> </template> <script setup> function previewFile() { // 假设文件在SharePoint上的绝对URL const fileUrl = 'https://yourtenant.sharepoint.com/sites/yoursite/Documents/test.docx'; // 编码URL const encodedUrl = encodeURIComponent(fileUrl); const officeUrl = `https://view.officeapps.live.com/op/view.aspx?src=${encodedUrl}`; window.open(officeUrl, '_blank'); } </script> ``` #### 方法2:使用XDOC(或其他第三方服务) 类似地,我们可以将文件URL传递给第三方预览服务。 ### 三、在SharePoint Framework (SPFx) 中集成Vue3 SPFx允许我们使用现代前端框架(包括Vue3)来构建Web部件。 步骤: 1. 创建SPFx项目 2. 集成Vue3 #### 示例步骤: 1. 创建SPFx项目(使用Yeoman): ```bash yo @microsoft/sharepoint ``` 根据提示选择,并确保选择“使用React”的选项(因为Vue3的集成需要手动配置,但我们可以基于React的模板修改)。 2. 安装Vue3依赖: ```bash npm install vue@next ``` 3. 在SPFx Web部件中挂载Vue应用: ```typescript // 在Web部件的render方法中 public render(): void { this.domElement.innerHTML = `<div id="vue-app"></div>`; const app = createApp({ template: `<h1>Hello from Vue 3!</h1>` }); app.mount('#vue-app'); } ``` 4. 更复杂的集成:我们可以将Vue组件单独写在一个文件中,然后在SPFx中引入。 ### 四、最佳实践和注意事项 1. **认证**:在Vue3应用中访问SharePoint数据,需要处理认证。建议使用MSAL进行令牌获取。 2. **跨域问题**:如果Vue应用独立部署(不在SharePoint站点内),需要处理CORS。可以在SharePoint中设置CORS策略,或者通过中间层(如Azure Function)代理请求。 3. **SPFx集成**:在SPFx中使用Vue3,需要确保Vue的编译和打包与SPFx兼容。SPFx使用Webpack,我们可以通过配置来支持Vue单文件组件(.vue文件)的编译。 ### 相关问题延伸 1. 如何在Vue3中实现与SharePoint的文件上传功能? 2. 如何利用Vue3的状态管理(如Pinia)来管理从SharePoint获取的数据? 3. 在SPFx中使用Vue3时,如何实现多语言支持? 4. 如何将Vue3应用部署为SharePoint的应用程序(如Teams标签页或个人应用)? > [^1]: AutoVue VueLink Integrations文档 > [^2]: 五大框架对比:能力矩阵与选型指南 > [^3]: Office Web Viewer使用说明 > [^4]: Autovue集成经验</think>以下是为您整理的 **Vue3 与 SharePoint 集成开发指南**,结合引用内容的核心技术点,提供分步解决方案和最佳实践: --- ### 一、集成架构设计 1. **技术栈组合** - **前端框架**: Vue3 + TypeScript + Pinia(状态管理) - **SharePoint 连接**: - REST API(基础数据操作) - Microsoft Graph API(高级功能) - SharePoint Framework (SPFx) 嵌入(企业级集成)[^2] - **文档预览**: Office Web Viewer 或 XDOC 云服务(引用[3]方案) 2. **认证流程** ```mermaid graph LR A[Vue3应用] --> B[MSAL.js登录] B --> C{Azure AD认证} C -->|成功| D[获取Access Token] D --> E[调用SharePoint API] ``` --- ### 二、核心集成方案 #### 1. 文档预览集成(引用[3]方案) ```vue <template> <div> <button @click="previewDoc">预览Word文档</button> </div> </template> <script setup> const previewDoc = () => { const docUrl = "https://sharepoint.com/sites/doclib/Report.docx"; // Office Web Viewer方案 const encodedUrl = encodeURIComponent(docUrl); const officeUrl = `https://view.officeapps.live.com/op/view.aspx?src=${encodedUrl}`; window.open(officeUrl, '_blank'); // 或使用XDOC云服务 // xdocPreview(docUrl); } </script> ``` #### 2. SharePoint 数据交互 ```typescript // 安装依赖:npm install @pnp/sp @pnp/graph import { spfi, SPFx } from "@pnp/sp"; import { graphfi } from "@pnp/graph"; // 初始化SP上下文 const sp = spfi().using(SPFx(context)); // 获取文档库数据 const getDocuments = async () => { return await sp.web.lists.getByTitle("项目文档").items.select("Title,FileRef")(); } // 创建表项 const createItem = async (title: string) => { await sp.web.lists.getByTitle("任务表").items.add({ Title: title, Status: "New" }); } ``` --- ### 三、深度集成方案 #### 1. SPFx 嵌入 Vue3 组件(企业级方案) ```typescript // SPFx WebPart 中集成Vue import * as Vue from 'vue'; import App from './VueApp.vue'; export default class VueWebPart extends BaseClientSideWebPart<{}> { public render(): void { const container = this.domElement; const app = Vue.createApp(App).mount(container); } } ``` > **配置要点**: > - 在 `config.json` 添加 `@vue/runtime-dom` 为外部依赖 > - 使用 `gulp bundle --ship` 打包部署[^2] #### 2. 工作流集成(引用[1][4]思想) ```typescript // 通过Power Automate触发审批流 const startApprovalFlow = async (fileUrl: string) => { const flowUrl = "https://prod-xx.flow.microsoft.com/api/..."; await axios.post(flowUrl, { file: fileUrl, approver: "user@domain.com" }, { headers: { Authorization: `Bearer ${accessToken}` } }); } ``` --- ### 四、最佳实践 1. **安全控制** - Azure AD 应用注册需配置权限: - `Sites.ReadWrite.All` (读写) - `User.Read` (基础用户信息) - 使用 `@azure/msal-browser` 实现安全登录 2. **性能优化** - 启用 `@pnp/core` 的缓存模块: ```typescript sp.setup({ defaultCachingStore: "session", defaultCachingTimeoutSeconds: 600 }); ``` - 使用 `Vue Suspense` 异步加载SP数据 3. **错误处理** ```typescript try { await sp.web.get(); } catch (e) { if (e instanceof SPHttpClientError) { console.error(`SharePoint错误: ${e.status} ${e.message}`); } } ``` --- ### 五、调试与部署 1. **本地调试** ```bash # 启动Vue开发服务器 npm run serve # 配置代理解决CORS问题 (vue.config.js) module.exports = { devServer: { proxy: 'https://yourtenant.sharepoint.com' } } ``` 2. **部署方案** | 方式 | 适用场景 | 优势 | |---|---|----| | **SPFx** | 企业内网应用 | 无缝嵌入SharePoint页面 | | **Azure静态站点** | 公开应用 | 支持CDN加速 | | **Teams标签页** | 团队协作 | 与Teams深度集成 | --- **相关问题延伸** 1. 如何实现Vue3与SharePoint的实时数据同步? 2. SharePoint文件上传到Vue应用的最佳实践? 3. 如何通过Vue3可视化SharePoint表数据? 4. Vue应用如何集成SharePoint搜索功能? > [^1]: AutoVue VueLink集成方案 > [^2]: SharePoint Framework开发指南 > [^3]: Office Web Viewer技术文档 > [^4]: Autovue企业集成案例
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值