设为首页 收藏本站
查看: 994|回复: 0

[经验分享] SharePoint 2007中 利用ListViewWebpart 和DataViewWebpart 跨站点 调用列表或者文档库

[复制链接]

尚未签到

发表于 2015-9-26 08:51:37 | 显示全部楼层 |阅读模式
1. 使用DataViewWebpart
这个网上已经有人写的比较详细了,直接摘录过来,原文地址【http://blog.iyunv.com/RainyLin/archive/2007/12/29/2003092.aspx
具体内容如下
Microsoft Office SharePoint Server(MOSS)只能在Web部件页中插入当前站点的列表或文档库
DSC0000.jpg

那么我们如何才能显示其它站点的列表或文档库呢?下面我们就用SharePoint Designer来实现这个功能。
首先我们创建一个示例站点A
DSC0001.jpg

同样我们再创建一个站点B,然后用SharePoint Designer 2007 打开站点B
DSC0002.jpg

打开网站后,我们双击Default.aspx,打开后切换到设计视图。然后我们先中“任务窗格”菜单中的“数据源库”
DSC0003.jpg

选中后我们在任务面板中可就可以看到如下图所示窗体,我们从下图中可以看出,SharePoint Designer默认只是列出了当前站点(SiteB)的所有列表和文档库等,如果我们要显示本站点的列表或文档库的话,只要直接将列表拖到相应的部件区域就可以了。
DSC0004.jpg

但是我们这里是要显示其它站点的列表,要如何办呢?在SharePoint Designer“数据源库”面板下面(见上图红色圈位置),有两个链接,其中一个就是“连接到其他库”,从这里我们就可以把其它站点连接进来。

DSC0005.jpg

确定关闭以上窗口,我们就可以看到“数据源库”中出现了我们的站点A
DSC0006.jpg

我们将站点A中的“通知”列表拖在界面的部件区域,显示如下
DSC0007.jpg

唉,怎么修改者是这么乱七八糟的东东呀,别急,左键点击修改者数据,我们会看到一个“>”的框,点击它我们就可以修改这个数据域的类型了,如下图,我们把它改成“RTF”,问题解决。
DSC0008.jpg

添加其它站点的列表显示成功,最终效果如图:
DSC0009.jpg
  
可能有人会问我们加入的通知标题是没有链接的,以及显示界面问题,这些我们都可以用SharePoint Designer进行修改,这里我就不在多说了。


2. 使用ListViewWebpart跨站点调用列表
首先,我们知道ListViewWebpart可以显示当前站点内容列表内容,但是如果想使用它在A站点显示B站点的列表内容,最开始我是直接在Designer中把ListViewWebpart的代码拷贝到B站点中,在Designer中将看到错误:
DSC00010.jpg

究其原因,通过反编译可以看到ListViewWebpart有一个WebId的属性,而默认的它的值是SPContext.Current.Web.ID,因此跨站调用的时候,肯定找不到列表

因此,我们可以封装一下ListViewWebpart,写一个简单的Webpart,就可以轻松的跨站点调用列表,然后上传到站点就可以使用了,示例代码如下:

DSC00011.gif using System;
using System.Runtime.InteropServices;
using System.Web.UI;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Serialization;

using Microsoft.SharePoint;
using Microsoft.SharePoint.WebControls;
using Microsoft.SharePoint.WebPartPages;

//UniqueStudio.Test, Version=1.0.0.0, Culture=neutral, PublicKeyToken=9f4da00116c38ec5
namespace UniqueStudio.Test
DSC00012.gif DSC00013.gif DSC00014.gif {
DSC00015.gif     [Guid("76bded68-1cbf-4ad4-84cc-7610ce8eaa5b")]
    public class MyListViewWebPart : Microsoft.SharePoint.WebPartPages.WebPart, IDisposable
DSC00016.gif DSC00017.gif     {
        private ListViewWebPart internalListViewWebPart = null;

        SPSite site = null;
        SPWeb web = null;
        SPList list = null;

        public MyListViewWebPart()
        {
            this.ExportMode = WebPartExportMode.All;
            

            site = new SPSite("http://test-1:10001");

            web = site.AllWebs["BlackSite2"];
            list = web.Lists["页面"];

            
DSC00018.gif         }

        protected override void Render(HtmlTextWriter writer)
        {
            // TODO: add custom rendering code here.
            // writer.Write("Output HTML");
            //this.internalListViewWebPart.RenderControl(writer);
            EnsureChildControls();
            base.Render(writer);
         
        }


        protected override void CreateChildControls()
        {
            this.internalListViewWebPart = new ListViewWebPart();

            //wp = new ListViewWebPart();

            //wp.ListName = SPContext.Current.Web.Lists["MyList"].ID.ToString("B").ToUpper();

            //wp.ViewGuid = SPContext.Current.Web.Lists["MyList"].DefaultView.ID.ToString("B").ToUpper();

            //wp.ViewType = ViewType.Html;

            //Controls.Add(wp);

            //base.CreateChildControls();

            this.internalListViewWebPart.WebId = web.ID;
            
            this.internalListViewWebPart.ListName = web.Lists["页面"].ID.ToString("B").ToUpper();
            this.internalListViewWebPart.ViewGuid = web.Lists["页面"].DefaultView.ID.ToString("B").ToUpper();
            this.internalListViewWebPart.ViewType = ViewType.Html;

            this.internalListViewWebPart.GetDesignTimeHtml();

            Controls.Add(this.internalListViewWebPart);
            base.CreateChildControls();
        }

        public override void Dispose()
        {
            if (site != null)
            {
                site.Close();
                site = null;
            }
            if (web != null)
            {
                web.Close();
                web = null;
            }
            base.Dispose();
        }
    }
DSC00019.gif }

不知道怎么上传文件,只好把代码贴上来了,最后的效果如下:
DSC00020.jpg
通过比较地址栏和状态的比较可以但到,我在站点http://test-1:10001/调用了http://test-1:10001/BlackSite2/子站点中的页面列表
至此,两种方法都讲完了,可以看到第二种方法是有明显的优势的,它把Toolbar也可以显示出来

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-118907-1-1.html 上篇帖子: Sharepoint 2010 自定义WebService 找不到网站应用程序 下篇帖子: How to Backup Windows SharePoint Services
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表