共享点:使用"兼容" UI显示非共享点内容列表的最佳方法?
我为Sharepoint构建了一个Web部件,该部件从外部服务检索数据。我想以与Sharepoint UI兼容的方式显示项目(适合周围环境)。
我知道" DataFormWebPart",但无法正常工作。它需要一个有效的数据源,而我无法从Web服务调用的结果中构建一个数据源。部分问题是我的Web服务包装程序没有公开XML返回信息,而是有许多反序列化的对象。似乎没有一种简单的方法可以将实际的对象转换为数据源,或者从对象数据中填充"通用"数据源。
我可以使用SPGridView来获得相同的UI,但是网格控件的功能并不多-并且将每个字段都强制放入其自己的列中。我希望将每个列表项呈现为具有复杂呈现功能的单个单元格(例如,StackOverflow显示其问题列表的方式。)我还希望获得尽可能多的Sharepoint标准UI,例如排序,过滤和分页控件。
因此,首先:这里是否有人编写了一个执行此操作的Sharepoint控件,如果有,我们是否有示例代码可共享?如果不是:我是否忽略了一些有用的控件,无论是MS提供的还是外部库中可用的控件?
谢谢!
史蒂夫
解决方案
回答
SharePoint的问题在于,有很多不同的方法可以做到这一点。如果数据变化不是太频繁并且不是太大,那么可能值得考虑将其输入到列表中进行显示。
如果我们拥有企业许可证,则可能值得将数据放入BDC并在那里使用。
我们可能必须将对象转换为xml或者将序列化的对象与XML Webpart一起使用以进行显示。仍然存在使用XSLT进行自定义渲染的问题。
回答
这是一篇很棒的文章,解释了如何使用BDC定义编辑器配置与Web服务的BDC连接:
使用业务数据目录定义编辑器创建Web服务连接
http://msdn.microsoft.com/en-us/library/bb737887.aspx
回答
执行此IMO的最佳方法是制作Web部件。作为Web部件,UI会自动呈现为与网站使用的主题相同(除非我们覆盖它),并且任何具有管理员权限的人都可以将其放置在任何地方。
- 制作Web部件的教程
- 打包和部署Web部件的教程
- 示例Web部件源代码
回答
Sharepoint: Best way to display lists of non-Sharepoint content with “compatible” UI?
看一下内置的sharepoint Web控件:
Microsoft.SharePoint.WebControls命名空间
它包含共享点中使用的所有控件。我想告诉我们更多信息,但是文档非常详尽。
回答
我们可以创建一个自定义Web部件并使用SPGridView。我们说我们不喜欢它,因为它迫使每个字段都进入其自己的列,但这不是事实。我们可以为每个列创建一个模板(ITemplate)并完全自定义其中显示的内容,就像使用普通的ASP.Net GridView一样。使用这种方法,就像SharePoint一样,我在列表项的标题旁边添加了小的"新"图像。