今天在和朋友讨论一个老外写的WebPart的时候,发现那个WebPart获取页面上的其他WebPart信息时,并不是通过标准的WebPart Connection,而是直接用代码来得到页面上另外那个WebPart的实例对象,然后通过获得此WebPart对象属性的值,来获得所需信息的。
SharePoint的Object Model其实提供了很完整的方法,让我们的代码可以直接获取任何页面上的所有WebPart的信息,所以在这里向大家简要介绍一下如何通过代码来访问页面上的WebPart。
示范代码如下:
SPWeb web = SPControl.GetContextWeb(this.Context);
SPWebPartCollection webParts = web.GetWebPartCollection(“default.aspx”, Storage.Shared);
上面的两行代码,就获得了“default.aspx”这个页面上的所有WebPart集合。SPWebPartCollection这个对象拥有例如“Add()”、“Delete()”等方法,能够让我们直接用代码把WebPart添加到页面上,或者从页面上把WebPart删除。
foreach (WebPart wp in webParts)
{
String sTitle = wp.Title;
}
上面的代码遍历所有的WebPart,每一个WebPart都是一个类型为“WebPart”(不是SPWebPart哦,呵呵)的对象,然后,通过访问这个对象的属性值,就能轻松获取某个WebPart的信息了。我们还能在代码中直接修改某个WebPart的属性值,但是修改以后,记得调用SPWebPartCollection对象的SaveChanges()方法,把修改的内容保存下来。
下面的图片是我做的一个Demo WebPart,在填入一个页面的URL后,它能够把此页面上所有的WebPart列出来,并显示选中的WebPart的所有属性。
此Demo WebPart点击这里下载。