65.9K
CodeProject 正在变化。 阅读更多。
Home

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

starIconstarIcon
emptyStarIcon
starIcon
emptyStarIconemptyStarIcon

2.60/5 (2投票s)

2008年4月24日

CPOL
viewsIcon

20201

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 使用诸如 WPQ1WPQ2WPQ3 ... 之类的令牌来注册 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 将被忽略。

历史

这是第一个版本。

© . All rights reserved.