在现在开发的项目中,发现一个好玩的东西,就是动态把WebPart自动的加载到指定的页面上的指定的位置?
感觉是不是很神奇?其实也很简单,主要用到SPLimitedWebPartManager这个类就OK拉
其实这个要注意的就是下面的WebPartXml 他就是 站点的webpart gallery描述,可能一个dll文件中存在多个webpart
在实际的开发中做一个Setup连部署人员都可以不用拉。。。HOHo。。。
                                string gallery = "";
                                gallery = gallery + "<?xml version=\"1.0\" encoding=\"utf-8\"?>";
                                gallery = gallery + "<webParts>";
                                gallery = gallery + "<webPart xmlns=\"http://schemas.microsoft.com/WebPart/v3/">";
                                gallery = gallery + "<metaData>";
                                gallery = gallery + "<type name=\"" + t.AssemblyQualifiedName + "\"/>";
                                gallery = gallery + "<importErrorMessage>Cannot import this web part.</importErrorMessage>";
                                gallery = gallery + "</metaData>";
                                gallery = gallery + "<data>";
                                gallery = gallery + "<properties>";
                                gallery = gallery + "<property name=\"Title\" type=\"string\">" + webpartTitle + "</property>";
                                gallery = gallery + "<property name=\"Description\" type=\"string\">" + webpartDesc + "</property>";
                                gallery = gallery + "</properties>";
                                gallery = gallery + "</data>";
                                gallery = gallery + "</webPart>";
                                gallery = gallery + "</webParts>";

private bool AddWebpartToPage(string TargetSiteUrl, string webPartXml, string ZoneID, int ZoneIndex,string Title,out string err)
        {
            bool flag = false;
            SPLimitedWebPartManager manager = null;

if (TargetSiteUrl == "" || webPartXml == "" || ZoneID == "")
            {
                err = "001";
                return false;
            }

try
            {
                //重新启动IIS

Process p = new Process();
                p.StartInfo.FileName = "iisreset.exe";
                p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
                p.Start();
                p.WaitForExit();

SPSite sites = new SPSite(TargetSiteUrl);
                SPWeb web = sites.RootWeb;

manager = web.GetLimitedWebPartManager(TargetSiteUrl, System.Web.UI.WebControls.WebParts.PersonalizationScope.Shared);
                StringReader input = new StringReader(webPartXml);
                XmlTextReader reader2 = new XmlTextReader(input);

System.Web.UI.WebControls.WebParts.WebPart webpart = manager.ImportWebPart(reader2, out err);
                webpart.ChromeType = System.Web.UI.WebControls.WebParts.PartChromeType.None;
                manager.AddWebPart(webpart, ZoneID, ZoneIndex);

web.Close();

this.SetTip("\"" + Title + "\"" + "安装完成");

flag = true;

}
            catch (Exception exception)
            {
                err = exception.Message;
                flag = false;
            }
            finally
            {
                if (manager != null)
                {
                    manager.Dispose();
                }
            }
            return flag;
        }

大家看看是不是很简单。。。

转载于:https://www.cnblogs.com/lindayyh/archive/2010/01/08/1641985.html

MOSS 直接动态安装webPart到页面相关推荐

  1. 谷歌page speed 安装使用及页面问题详解

    原文地址:http://wenku.baidu.com/view/b0a61f3ebcd126fff7050b40.html 谷歌page speed 安装使用及页面问题详解 谷歌page speed ...

  2. 更上层楼:动态安装你的windows服务

    前言:先说明一下本文示例windows服务的简单需求,即根据外部配置实现不同方式记录日志的功能.记录日志的方式有三种,分为文本记录.数据库记录以及文本和数据库同时记录日志.如您所知,这个功能基本上没有 ...

  3. 关于ASP.NET动态加载Master页面

    代码 //关于ASP.NET动态加载Master页面 //首先创建一母版页Master.master /* <%@ Master Language="C#" AutoEven ...

  4. php动态生成页面结构,PHP 动态生成静态HTML页面示例代码

    temp.html {penglig_site_title} test.php header('content-type:text/html; charset=utf-8');//防止生成的页面乱码 ...

  5. 2021/12/20 显示动态读秒跳转页面

    显示动态读秒跳转页面 1.antdesign 第一种: 读秒3s后跳转 <template><a-button type="primary" @click=&qu ...

  6. fastapi python_fastapi安装及访问页面

    1.fastapi安装及访问页面 环境 Python3.8 pip3 install fastapi pip3 install uvicorn pip3 install -i https://pypi ...

  7. MOSS系列一 MOSS 2007的安装

    MOSS系列一 MOSS 2007的安装 Posted by 尹揆 Microsoft Office SharePoint Server 2007 提供了一些企业级功能,来满足业务关键需求,例如,管理 ...

  8. 微信小程序点击跳转动态改变跳转页面标题

    微信小程序点击后跳转动态改变跳转页面标题 页面点击跳转后原页面的item.name为跳转后页面的标题 原页面: 跳转页面: <view class="company-item" ...

  9. layui 如何动态加载局部页面_从输入URL到页面加载的过程?如何由一道题完善自己的前端知识体系!

    前言 见解有限,如有描述不当之处,请帮忙指出,如有错误,会及时修正. 为什么要梳理这篇文章? 最近恰好被问到这方面的问题,尝试整理后发现,这道题的覆盖面可以非常广,很适合作为一道承载知识体系的题目. ...

最新文章

  1. Bug tracker .net 部署经验(完善中)
  2. Android项目中创建编译期的注解
  3. Flink在美团的实践与应用
  4. 对map集合进行排序
  5. 去非数字字符串的前导零
  6. linux搜索文件为1kb,Linux常用命令
  7. 听说年底这些公司在裁员?是不是真的......
  8. 转载一朋友的qq空间,感觉都是至理名言啊!
  9. Linux学习笔记第二周第四次课(2月1日)
  10. JLink重刷固件(win7/win8/win10亲测可用)
  11. 如何删除目录下的页码,使文章页码从正文开始
  12. 【存储知识】存储基础知识(存储设备、HBA卡、硬盘接口类型、存储特性指标)
  13. python打印日历_用Python打印某年日历
  14. 深度学习之学习(3-4)YOLOV4
  15. 启动虚拟机sd 0:0:0:0: [sda] Assuming drive cache: write through错误解决 本人实测!
  16. 计算机函数sumif求平均值,SUMIF在指定条件下求平均值
  17. 基于opencv实现桌面图标识别
  18. AV1的CDEF过程介绍
  19. 硬件知识:内存条出现故障的解决方案!
  20. FS4412开发板简介

热门文章

  1. 搞笑之----普通话
  2. Android 自定义view的知识梳理。
  3. BLE工作模式: Central+Peripheral(Advertising+Connected)
  4. android系统sharedUserId: SYSTEM_UID+PHONE_UID+BLUETOOH_UID+LOG_UID+NFC_UID
  5. 【Gamma】Scrum Meeting 9
  6. 修改python的pip下载源
  7. Python内置类型—序列
  8. java中try-catch另外一种用法:try(){}语法使用
  9. Flutter入门:Button
  10. Oracle获取月初/月末/季初/季末/半年初/半年末/年初/年末