I’ve之前曾提到“you don’t get very much”当您开始创建包含一些SharePoint托管组件(例如页面)的应用时。您将获得一个基本的ASPX页面,然后从那里开始’取决于您作为开发人员。在玩应用双色球推荐一注的同时,我’我们发现通过将开箱即用的组件(例如SharePoint命名空间中的Web部件/控件)添加到应用页面来进行试验很有趣。结果非常有趣,并得出了一些发现,这些发现可能是工具箱中的有用技巧。如果没有别的,您可能会发现这很有趣“leftfield”发表关于您所没有的一些问题’t thought to ask.
在我们潜水之前,这里’s在我们整个应用双色球推荐一注系列中的位置:
- SharePoint 2013应用–架构,功能和UX注意事项
- 入门–在SharePoint应用双色球推荐一注中创建列表,内容类型,字段等(配置)
- 在应用双色球推荐一注网络中使用数据以及为什么要这样做
- 从SharePoint 2013应用访问最终用户数据(在宿主网站中)
- 将SharePoint 2013应用推广到企业-租户范围和PowerShell安装
- Azure是新的SharePoint‘_layouts’ directory
- “Host web 应用” –将文件(例如母版页)设置到主机网站
- “Host web 应用” –设置字段和内容类型
- 将SP2013提供双色球推荐一注托管的应用双色球推荐一注/远程事件接收器部署到Azure网站(用于Office 365应用双色球推荐一注)
- 在SharePoint应用双色球推荐一注中使用Web部件[本文]
在应用双色球推荐一注中部署Web部件
如果创建SharePoint托管的应用双色球推荐一注,则可能会注意到您获得的默认页面是ASPX页面而不是HTML。此外,它在顶部有几个声明,允许使用SharePoint控件:
的idea here is that you might want your app to take advantage of some SharePoint building blocks (web parts/controls) rather than recreating that functionality from scratch. But since 你不’在应用双色球推荐一注中具有整页编辑模型(它’不是SharePoint内容 贡献者可以编辑的,毕竟),所有Web部件都必须(由开发人员)包含在页面的标记中。我进行了一些测试,以查看哪些Web部件似乎可以正常工作,而本文实际上是关于我的发现的。
我扩展了标记,以在Web部件区域中包括一些常见的Web部件(并添加了我开始需要的所有@Register指令)。我的标记是:
我(可能)可以在应用双色球推荐一注中使用哪些Web部件?
这里’我的结果摘要:
网页部分 | 可以用吗 |
内容查询Web部件 | 没有 |
内容搜索Web部件 | 是 |
XsltListView Web部件 | 是 |
核心搜索结果Web部件 | 是 |
Page Viewer Web部件 | 是 |
数据视图Web部件 | 没有 |
Result Script web part (for 搜索结果) |
内容查询Web部件:
合格证似乎持平“no”. If 你不’在主机网络上未启用发布功能,您’ll get this:
这似乎与无法获取ContentQueryMain.xsl有关。我注意到它是401而不是404,这很有趣,但是无论如何,如果激活发布,就会得到:
因此,感觉“内容查询” Web部件可能没有受到任何关注,无法使其在应用双色球推荐一注Web上正常工作。它’值得注意的是,XSL的路径引用了应用双色球推荐一注网络(在我的情况下, //cob-387fbe6473fe0b.spapps.dev/Style%20Library/XSL%20Style%20Sheets/ContentQueryMain.xsl)– although it is “structurally”正确(因为样式库是从根引用的),我认为有效’s not possible to “browse”在应用双色球推荐一注网络域上托管网络内容。我什至尝试提供绝对 主机网站 XSL文件的网址,但是也会因‘page not found’ error.
因此,也许需要对CQWP进行重新设计才能使其在应用双色球推荐一注中运行。
内容搜索Web部件:
该Web部件似乎工作正常,这是个好消息:
It’值得一提的是,显示模板仍是从宿主网站(母版页库)中提取的,但是似乎没有问题。
XsltListView Web部件:
当我’在之前的文章中提到过’第一次将列表添加到正在开发的应用双色球推荐一注中时会有些混乱-默认情况下,’页面上没有任何内容(例如,指向列表的导航链接),它不会告诉您列表配置是否成功。但是,既然你’您将知道列表URL,然后在浏览器地址栏中键入地址以显示该URL。要显示列表中的项目,您可以’ll最有可能想要使用XsltListView– you’我们将需要手动将标记添加到您的页面之一。当你这样做的时候,你’将会看到在您的应用双色球推荐一注网络中显示列表中的项目效果很好:
我想知道是否可以使用此Web部件显示列表中的项目 在主机网络中。抛开包括令牌之类的潜在问题,例如 〜现场 在URL中(通过使用硬编码的绝对URL进行测试),我发现它不是:
Page Viewer Web部件:
在应用双色球推荐一注中使用Page Viewer Web部件的想法可能非常有趣。我很想知道是否可以在我的应用双色球推荐一注中显示来自宿主网站的页面,但发现它带有警告(如下)。下图显示了–来自宿主网站的页面。一些要点:
- 的“允许该页面为iframe”消息只是页面上的一些文本
- 黄色“customized”消息是因为我在SPD中手动编辑了页面以添加<WebPartPages:AllowFraming ID ="AllowFraming" runat="server" />标签。如果这是由其他更高级别的东西(页面布局/母版页)提供的,则此消息将不存在
但主要的警告可能是,对于硬编码/绝对网址,它们都可以正常工作,但是诸如 〜现场 似乎不起作用。因此,在现实生活中,如果您需要在此处具有任何相对URL,则可能会遇到困难。仍然,也许有用。
结果脚本Web部件(搜索结果):
[2013年8月22日更新:Scot Hillier与我们取得联系,告诉我可以使用此Web部件。解决方案可以在本节的底部找到。]
[下面是原始文本,以显示您可能遇到的错误:]结果脚本Web部件实际上是现代的“search results”SharePoint 2013中的Web部件。可用于显示给定搜索查询的结果– it is the web part used on the default SP2013 搜索结果 page, and very powerful it is too. 好像这个 应该 在SharePoint托管的应用双色球推荐一注中工作,但我无法’t quite get there. I’m hoping I’我忽略了某些东西,实际上是有可能的,因为问题似乎仅仅是在搜索查询中获得了正确的转义引号格式(DataProviderJSON属性)。我尝试了各种形式,但我要么看到以下内容:
..或这个:
我尝试的引号/转义字符的排列包括:
- ‘
- \”
- ””
- ..等等
更新–解决方案(感谢苏格兰人!):
- 的answer is to use XHTML encoding of the quotation marks – i.e. "
当您这样做时,您’会看到结果脚本Web部件在您的应用双色球推荐一注中确实起作用:
以便’好消息,这意味着我们可以在应用双色球推荐一注中利用此Web部件!
This seems a shame, because I can imagine lots of 应用 which might want to display 搜索结果. For these 应用, a nice web part cannot be used –代码是必需的,例如我在 使用REST调用SharePoint搜索(例如从JavaScript或应用双色球推荐一注).
核心搜索结果网页部分:
尽管事实证明可以使用“结果脚本” Web部件,但是出于任何原因,’不适合您在那里的情况’始终是“核心搜索结果” Web部件–这是您从SharePoint早期版本中了解并喜欢的搜索结果Web部件。它使用XSL(而不是JavaScript显示模板)进行渲染,并且不会’没有复杂的查询生成器(您不会’则无法在应用双色球推荐一注中使用),但可以在页面上显示搜索结果很好:
结论
某些Web部件可以在应用双色球推荐一注内使用,而某些则不能。在其他类型的控件(例如SharePoint服务器控件)方面,我发现应用双色球推荐一注使用的web.config的SafeControl设置比常规设置更具限制性–几个名称空间和特定控件被标记为不安全,因此许多服务器控件在应用双色球推荐一注页面中将被禁止使用。还是’很有可能可以使用一些–这里将需要更多测试。
通常,通常应该适用于SharePoint应用双色球推荐一注的开发人员– check if there’框中的东西,可以在编写代码之前使用。那里的东西可能会节省您大量的精力。
下次-使用应用双色球推荐一注部件(ClientWebPart)将应用双色球推荐一注元素带入主机网络
8条评论:
本文中“ manual”一词被使用了很多次,以至于我只能再次得出结论,Microsoft发布了一个没有一流开发工具集的SharePoint版本(在本例中为2013)。
当SharePoint 2007在Visual Studio 2005(当时用于自定义SP 2007的IDE)中以接近零的开发工具发布时,我们第一次看到了这个故事。
那不是’在Visual Studio 2012之前,SharePoint 2010可以使用全套工具(例如,内容类型向导)。
现在,我们逐篇阅读有关如何“almost”使用SharePoint 2013和Visual Studio 2012或2013 Preview来执行此操作“你在这里需要一个垫片,而在那边需要另一个螺栓”使其在生产环境中真正起作用。
我们什么时候可以从Microsoft获得适当的工具集来自定义SharePoint?我担心答案在两者之间“maybe” and “never”.
@匿名,
我认为这取决于您的期望。如果您曾经为SAP,Salesforce等其他企业产品或FileNet等其他ECM平台开发过,'我知道SharePoint当然不会更糟。实际上,'可能好得多。
当然如果你'与在.NET或Java等较薄/较低级别的平台(坦率地说,活动部件较少)上进行开发相比,有时SharePoint确实感觉好像'更摩擦。但是那's因为通常有!我个人'm not sure it'期望其他任何事情都是现实的。
It'是一个复杂的平台,因此开发人员和用户有时总是希望探索一些稍微不合常规的方法(就像这篇文章一样)。但它'有助于识别此类情况-就本文而言'd say:
-没有人说您必须使用"apps"SharePoint中的框架
-微软唐'不能提供指导说明可以在其中使用Web部件-我认为这些东西纯粹是作为奖励,可以节省一些代码
你不同意吗?
克里斯。
出色而宝贵的探索工作!感谢您分享克里斯。
克里斯你好
很棒的文章。我发现在添加XsltListViewWebPart之后,"edit this list"链接无效,并返回JavaScript错误。可以通过在页面上添加对SP.UI.Dialog.js的脚本引用来解决此问题。希望这对某人有帮助。
本
克里斯,你好
我非常喜欢这个帖子。
我有一个查询。XSLTList视图示例引用列表是AppWeb
如何使用HostWeb for XSLT列表视图WebPart中的OOB列表完成此操作
斯瓦蒂
@Swati,
我有两个用于XsltListViewWebPart的示例,一个用于主机网络,一个用于应用双色球推荐一注网络。上面,我指出:
"我想知道是否可以使用此Web部件显示主机Web中列表中的项目。撇开在URL中包含〜site这样的令牌的潜在问题(通过对硬编码的绝对URL进行测试),我发现事实并非如此。"
所以我不'相信这是可能的。您'我们将需要编写一些代码(例如JSOM / REST)来从主机网络中提取项目,并自行显示。我的帖子 从SharePoint 2013应用访问最终用户数据(在宿主网站中) 可能有帮助。
干杯,
克里斯。
克里斯你好
感谢您的帖子。它确实为我们的SharePoint App开发提供了起点。
但是,有一个问题:是否可以管理XsltListViewWebPart(appweb版本)的权限?我的目标是显示一个列表,但我不希望用户编辑或添加项目。
感谢您的快速回答!
法比安
@Fabian,
好吧,请考虑如果用户"contribute"对基础列表的权限,他们基本上将能够添加/编辑项目。并且由于应用双色球推荐一注中的列表是作为应用双色球推荐一注*的一部分提供的,因此情况就是如此。
HTH,
克里斯。
发表评论