人无信不立/2008-04-26 22:30
永春阁
专注于技术,切不可沉湎于技术
博客园
社区
首页
新随笔
联系
管理
订阅
随笔- 224 文章- 20 评论- 1239
在Sharepoint中如何共享其他网站中的列表?
在Sharepoint搭建过程中,我们可能建立了多个sharepoint主网站,每个主网站下又会有一些子网站,那么如何把其他主网站及子网站的列表在自己的页面中显示呢?
我们这次项目的开发过程中就碰到了这个问题,目前我总结出来了两种实现的方法:
一、使用数据视图结合连接到其他库的方法
这种方法相对简单一点,但是只能实现当前主网站和自己的子网站之间的列表共享,如果要实现共享其他主网站甚至其他机器上的Sharepoint站点的列表就要使用第二种方法了
使用场景
:当时项目中有一个门户网站,门户网站下包含新闻子系统、博客子系统等,要在门户的首页上显示这些子系统中的文章。
使用方法
:
1、打开Sharepoint Designer,选择菜单中的任务窗格-〉数据源库,将数据源库的视图打开
2、在数据源库的下方单击 "连接到其他库..."链接,在弹出窗口中输入其他Sharepoint站点的路径
然后就会在数据源库的视图中看到这个网站的列表信息
3、在自己的页面中插入一个数据视图
4、在数据源库视图中选择要显示的列表-〉显示数据
5、在出现的数据源详细信息视图中选择要显示的字段,将它插入到数据视图中去
6、插入之后就可以按照正常的数据视图的方式来控制显示格式了。
通过以上的操作就可以实现将子网站的视图在任意页面中来共享了
二、自定义自己的数据视图,通过继承
DataFormWebPart
实现自己的webpart
这种方法相对复杂一点,但是功能强大,可控制性好,可以实现很多复杂的功能。
使用场景
:我们使用了tfs 2008系统,每在tfs中创建一个项目都会自动生成一个sharepoint的网站(
http://***:88/sites/
projectname
) 在这个网站里保存一些项目的文档等信息,那么我们想做一个统一的网站,在这个网站上根据传入的参数来动态的显示不同项目的文档
使用方法
:
通过多次实验,我发现DataFormWebPart有点相当于.NET中的GridView控件,那么我们就可以在绑定数据源的时候获得自己的数据源,来达到显示其他网站列表的目的,代码如下所示:
1
//
自定义数据视图,根据不同的项目显示不同的项目文档
2
public
class
MyDataFormWebPart : DataFormWebPart
3
{
4
private
string
_tfsUrl
=
"
http://server:88/sites/
"
;
5
[WebBrowsable(
true
), Personalizable(
true
)]
6
public
string
TfsUrl
7
{
8
get
{
return
_tfsUrl; }
9
set
{ _tfsUrl
=
value; }
10
}
11
12
private
string
_docName
=
"
项目管理
"
;
13
[WebBrowsable(
true
), Personalizable(
true
)]
14
public
string
DocName
15
{
16
get
{
return
_docName; }
17
set
{ _docName
=
value; }
18
}
19
20
public
override
void
DataBind()
21
{
22
string
ProjectName
=
Page.Session[
"
SESSION_PROJECT_NAME
"
]
as
string
;
23
SPSite site
=
new
SPSite(TfsUrl
+
ProjectName);
24
SPWeb web
=
site.AllWebs[
0
];
25
SPList list
=
web.Lists[DocName];
26
27
(
this
.DataSource
as
SPDataSource).List
=
list;
28
29
base
.DataBind();
30
}
31
32
}
关键就是其中23-27行的代码,根据传入的参数动态决定绑定到哪一个列表
有了这个webpart之后,我们就可以在自己的页面上来使用了,使用方法和标准的数据视图控件的使用方法差不到,要注意如下一个问题:
和文档库绑定后,可以正确的显示该文档下的文档,但是不能打开,原因是:我们原来的文档的路径为:
http://server:88/sites/library/DocLib2/Project%20Checklist.xls
,那么在其他网站上显示后会把文档url的路径拼成
http://server:999/sites/library/DocLib2/Project%20Checklist.xls
,因为数据库中保存的
@FileRef
字段的值是一个相对路径
解决方法:给这个数据视图加一个参数
然后将所有的
@FileRef
替换成
concat($DocHomeUrl,@FileRef)
,这样就可以正确的进行查看和下载了
(PS:加入参数时Sharepoint Desinger会自动的删除
SelectParameters
中的一个参数:
<asp:QueryStringParameter QueryStringField="RootFolder" Name="RootFolder" Type="String"></asp:QueryStringParameter>
如果被删除,需要手工加入
Sharepoint Desinger经常会误删除一些代码,而且经常会报错,现在我们开发时都不敢在设计视图中进行,只敢在代码视图中开发了
)
上面只是实现了文档的查看和下载,如果要实现增加、删除等操作还要进行一些其他处理,基本思路和查看的解决方案差不多,当然实现起来可能更复杂一点。
posted @ 2007-12-27 14:22
永春
阅读(1401)
评论(5)
编辑
收藏
所属分类:
SharePoint
发表评论
回复
引用
#1楼
2007-12-28 08:58 |
RainbowOOO [未注册用户]
呵呵 好文沁人心!
顶了!
回复
引用
#2楼
2007-12-28 10:57 |
RainbowOOOO [未注册用户]
咋个不成功呢!?
(this.DataSource as SPDataSource).List = list;
执行到这出错!
指教!
回复
引用
查看
#3楼
[
楼主
]2007-12-28 11:18 |
GSpring
@RainbowOOOO
你要确认你有这个list,是不是你取得的list为null值?
或者你的数据视图有问题,没有和列表绑定。要把数据视图先随便和一个列表绑定
回复
引用
#4楼
2007-12-29 10:06 |
RainbowOOOO [未注册用户]
不好意思!
我试了一下,步骤如下:
1,重写DataFormWebPart(代码同上);
2,部署
3,在SPSDesigner中添加web部件(我重写后的DataFormWebPart),SPSDesigner重启!我也觉得“要把数据视图先随便和一个列表绑定”,但是
还没有绑定SPSDesigner就重启了。
4,跟踪了一下,问题就在这一句上,(this.DataSource as SPDataSource).List = list;
总结:
web部件缺少数据源,因此出错!楼主进行了什么额外的处理,请指教!
回复
引用
查看
#5楼
[
楼主
]
2007-12-29 10:11 |
GSpring
@RainbowOOOO
第三步时,添加一个普通的数据视图控件(原来的DataFormWebPart),设置好格式等之后,把这个控件名称改成你自定义的就可以了
社区
新闻
新用户注册
刷新评论列表
标题
姓名
主页
Email
(只有博主才能看到)
验证码
*
看不清,换一张
[
登录
][
注册
]
内容(请不要发表任何与政治相关的内容)
Remember Me?
登录
使用高级评论
新用户注册
返回页首
恢复上次提交
[使用Ctrl+Enter键可以直接提交]
所属分类的其他文章:
·
[Sharepoint2007对象模型]第三回:Web应用程序(SPWebApplication)
·
Sharepoint2007对象模型系列
·
[Sharepoint2007对象模型]第二回:Web应用程序服务(SPWebService)
·
[Sharepoint2007对象模型]第一回:服务器场(SPFarm)
·
《博客园精华集--Sharepoint分册》第三轮结果
·
将你的Asp.NET应用程序嵌入到SharePoint 读后感[转]
·
在MOSS中开发一个模块化的feature
·
MOSS SDK学习(8):手工创建MOSS站点
·
在MOSS中开发和部署Infopath
·
Sharepoint开发问题归纳(不断更新)
最新IT新闻:
·
英特尔雅虎开发网络计算机频道
·
Windows Live视频邮件9月9日开始测试
·
Intel首次公开展示Nehalem架构迅驰3平台
·
Pogo浏览器
·
洪磊口述:番茄花园如何捆绑流氓软件月入十万
博客园新闻频道
博客园首页
社区
公告
本Blog版权均为本人所有,欢迎任何媒体和网站转载本人博客的内容。
本Blog的内容按原样提供,本人不提供任何形式的担保。
转载请注明出处
我的MVP配置
自2007年3月8日:
系列文章
1、
Sharepoint2007对象模型系列
2、
C#强化系列文章
3、
MOSS SDK学习系列
4、
IBatis.Net学习笔记系列
5、
MonoRail学习笔记系列
我的最新闪存
到底要什么时候才能忘记
8-1 13:01
<
2007年12月
>
日
一
二
三
四
五
六
25
26
27
28
29
30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
与我联系
发短消息
搜索
常用链接
我的随笔
我的空间
我的短信
我的评论
更多链接
我的参与
我的新闻
最新评论
我的标签
留言簿
给我留言
查看留言
我参加的小组
iBATIS.NET
写书译书小组
Debug 探索团队小组
MonoRail
博客园精华集出版小组
我参与的团队
SharePoint团队(0/721)
Ajax&Atlas技术团队(0/1147)
南京.net俱乐部(0/444)
ASP.NET AJAX (Atlas)学习(0/1340)
MVP(微软最有价值专家)团队(1/540)
Debug 探索团队(0/47)
博客园精华集出版(0/42)
随笔分类
.Net(48)
(rss)
AJax(3)
(rss)
C++/VC学习(2)
(rss)
iBATIS.NET(15)
(rss)
Java(6)
(rss)
MonoRail(25)
(rss)
OS Shell(5)
(rss)
SharePoint(42)
(rss)
Windows Server(1)
(rss)
XHTML/CSS/Script(6)
(rss)
企业开发(2)
(rss)
数据库(20)
(rss)
外语(1)
(rss)
项目管理(7)
(rss)
娱乐/杂记/修养(49)
(rss)
随笔档案
2008年8月 (2)
2008年7月 (7)
2008年6月 (1)
2008年5月 (2)
2008年4月 (12)
2008年3月 (14)
2008年2月 (3)
2008年1月 (14)
2007年12月 (17)
2007年11月 (21)
2007年10月 (31)
2007年9月 (13)
2007年8月 (25)
2007年7月 (10)
2007年6月 (1)
2007年5月 (2)
2007年4月 (10)
2007年3月 (15)
2007年2月 (7)
2007年1月 (1)
2006年12月 (3)
2006年11月 (21)
2006年10月 (5)
2006年8月 (2)
SharePoint学习
Codeplex Sharepoint
jianyi @ cnblogs
Kaneboy's Blog
Patrick Tisseghem's Blog
管理相关
下载_中计在线
中国管理之家
开源社区
C#开源资源大全
Java开源大全
SourceForge主页
门户网站
南京程序员俱乐部
积分与排名
积分 - 280252
排名 - 102
最新评论
1. re: IBatis.Net学习笔记一--开篇
支持,向你学习. (Bonseen)
2. re: ADO.Net连接池和连接字符串剖析(转)
在创建连接池类的时候,是否需要创建方法用来判断新创建的连接是否是大于最大连接数等方法?还是连接池中的连接自动管理? (zhangqingjun)
3. re: C#强化系列文章七:序列化和反序列化
受教 (小手冰冰凉)
4. re: [转载]最经典,最可怕的qq聊天记录
哎!! (lena)
5. re: Sharepoint2007对象模型系列
请问楼主有没人遇到过多人调试的问题,是怎么解决的?如果知道的话,请不吝赐教下,谢谢。我的邮箱是xing98218@yahoo.com.cn (王星)
阅读排行榜
1. 这样的面试题你会吗?(4684)
2. 年终个人总结:我这五年(3923)
3. Asp.Net Forms验证(自定义、角色提供程序、单点登录)(3770)
4. 为什么要使用MonoRail?(3700)
5. 防止一个用户登录多次的方法(3686)