承接MOSS各种工作流开发 联系人:王先生.电话:13691349686 QQ:252385878 MSN:wanghao-3@hotmail.com

寻找网络安全产品代理商(主要产品有:主机审计与监控系统,移动介质管理系统,文件集中管理安全存储系统,硬盘锁等)主要针对内网安全和数据防泄密 联系人:张小姐 电话:13522877350 QQ:419919940

MOSS 直接动态安装webPart到页面

 在现在开发的项目中,发现一个好玩的东西,就是动态把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;
        }

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

posted on 2007-07-05 10:07 A A 阅读(2110) 评论(3)  编辑 收藏 所属分类: SharePoint

评论

#1楼  2007-07-06 00:15 sinoese      

顶下,并求助http://www.cnblogs.com/sinoese/archive/2007/07/05/807768.html   回复  引用  查看    

#2楼 [楼主] 2007-07-06 09:06 AA(Show)      

好!我去看看!   回复  引用  查看    


标题  
姓名  
主页
Email (只有博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2007-09-15 20:37 编辑过
 
另存  打印