MOSS 2007 中的 WPSC - “此时无法检索属性。”






2.60/5 (2投票s)
WPSC 注册 Web Part 的方式与 SharePoint 2003 有何不同?
引言
Web Part 服务组件 (WPSC) 是 SharePoint 开发人员在客户端编程方面的一个不错的功能。它为开发人员提供 SharePoint Web Part 对象与 HTML 对象相结合,以便进行 Web Part 管理实践。
背景
SharePoint 2003 和 SharePoint 2007 之间,对象级别似乎没有太大变化。WPSC 3.0 比 WPSC 2.0 多了一个名为 WebServerRelativeURL
的属性。但事情似乎并不那么简单,因为 WPSC 注册 Web Part 的方式发生了变化……
在 WSS 2.0 中,WPSC 使用诸如 WPQ1、WPQ2、WPQ3 ... 之类的令牌来注册 Web Part。
WPSC.Init(document);
var varPartWPQ7 = WPSC.WebPartPage.Parts.Register('WPQ7',
'6b93d728-6d3e-47cb-9917-37cfd0aff443',document.all.item('WebPartWPQ7'));
var varPartWPQ3 = WPSC.WebPartPage.Parts.Register('WPQ3',
'32950565-92aa-4a11-92b0-9dcff1b4e956',document.all.item('WebPartWPQ3'));
var varPartWPQ2 = WPSC.WebPartPage.Parts.Register('WPQ2',
'338c0c38-b8cb-4ea2-918e-2d5c632df2bd',document.all.item('WebPartWPQ2'));
var varPartWPQ4 = WPSC.WebPartPage.Parts.Register('WPQ4',
'3612bf7c-595c-48fe-aaf4-87cbb89078a2',document.all.item('WebPartWPQ4'));
var varPartWPQ5 = WPSC.WebPartPage.Parts.Register('WPQ5',
'43bf7599-0acf-41d7-b3f5-397cbc7eca6b',document.all.item('WebPartWPQ5'));
var varPartWPQ6 = WPSC.WebPartPage.Parts.Register('WPQ6',
'4623b8c7-989f-471c-a3fa-7f53148acdcd',document.all.item('WebPartWPQ6'));
var varPartWPQ1 = WPSC.WebPartPage.Parts.Register('WPQ1',
'056d0533-514b-42e1-8925-38bf2c5b3b07',document.all.item('WebPartWPQ1'));
在 WSS 3.0 中,WPSC 使用与 WSS 2.0 相同的令牌来注册 Web Part,但 WPQ1 用于注册一个空的 Web Part。如果您尝试访问其属性,将会收到一个错误:“此时无法检索属性”。
var varPartWPQ4 = WPSC.WebPartPage.Parts.Register('WPQ4',
'e2412c24-1c4f-4545-93dc-2a4e965b2032',document.all.item('WebPartWPQ4'));
var varPartWPQ5 = WPSC.WebPartPage.Parts.Register('WPQ5',
'77cbc2a3-c770-4a7d-9024-63b78cc45ff4',document.all.item('WebPartWPQ5'));
var varPartWPQ6 = WPSC.WebPartPage.Parts.Register('WPQ6',
'f4481df0-a93d-495d-bcb6-fa686bbd9816',document.all.item('WebPartWPQ6'));
var varPartWPQ7 = WPSC.WebPartPage.Parts.Register('WPQ7',
'1fddcba4-7b65-40d9-972f-d6ee86a224f4',document.all.item('WebPartWPQ7'));
var varPartWPQ1 = WPSC.WebPartPage.Parts.Register('WPQ1',
'00000000-0000-0000-0000-000000000000',document.all.item('WebPartWPQ1'));
让我们通过一个示例代码来收集 Web Part 标题
if(typeof(WPSC) == 'undefined')
return;
if(WPSC.WebPartPage)
PortalPartsCollection = WPSC.WebPartPage.Parts;
if(PortalPartsCollection)
{
for(var i=0; i< PortalPartsCollection.Count; i++)
{
var objWebPart = PortalPartsCollection.Item(i);
if(objWebPart.WebPartQualifier == "WPQ1")
continue;
if(objWebPart.Properties.Count() > 0)
{
var webpartTitle =
objWebPart.Properties.Item("http://schemas.microsoft" +
".com/WebPart/v2#Title").Value;
PortalPartsTitleCollection.push(webpartTitle);
var targetObject = searchTargetNode(objWebPart);
if(targetObject)
targetObject.innerHTML = createArchor(webpartTitle) + targetObject.innerHTML;
}
}
}
在上面的代码中,我们可以看到 WebPartQualifier
为 “WPQ1” 的 Web Part 将被忽略。
历史
这是第一个版本。