MOSS 直接动态安装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
超強干貨來襲 云風專訪:近40年碼齡,通宵達旦的技術人生總結
以上是生活随笔為你收集整理的MOSS 直接动态安装webPart到页面的全部內容,希望文章能夠幫你解決所遇到的問題。