在Javascript中嵌入Sharepoint Web部件

时间:2013-02-07 05:15:19

标签: javascript sharepoint web-parts zone

我已经部署了一个sharepoint网页,并添加了一个自定义webpart,可以按照客户想要的方式显示数据。 webpart的问题在于,当用户想要时,我们无法扩展,修改或隐藏它。我们考虑将Sharepoint webpart嵌入Java包装器中。通常,这在标准HTML页面上很容易。问题是如何在Sharepoint中的java包装器中嵌入webpart?

我想添加2个html按钮,一个用于显示webpart,另一个用于隐藏webpart。挑战是找到我可以传递给任一按钮以执行hideMe或showMe java脚本的webpart ID。

webpart标题:

<WebPartPages:WebPartZone runat="server" Title="loc:FullPage" ID="FullPage" FrameType="TitleBarOnly"><ZoneTemplate>
<WpNs0:Trend runat="server" __MarkupType="xmlmarkup" WebPart="true" __WebPartId="{AFA8DE0A-E7B4-4580-BFAB-038D96E72F0A}" >

代码(到目前为止)

<button onclick="HideWebpart('AFA8DE0A-E7B4-4580-BFAB-038D96E72F0A')">Hide Me</button>
<button onclick="ShowWebpart('AFA8DE0A-E7B4-4580-BFAB-038D96E72F0A')">Show Me</button>

<script>
function HideWebpart(AFA8DE0A-E7B4-4580-BFAB-038D96E72F0A)
{
    var wp=document.getElementById(AFA8DE0A-E7B4-4580-BFAB-038D96E72F0A);
    wp.className = "hidden";
}

function ShowWebpart(AFA8DE0A-E7B4-4580-BFAB-038D96E72F0A)
{
    var wp=document.getElementById(AFA8DE0A-E7B4-4580-BFAB-038D96E72F0A);
    wp.className = "";
}
</script>

1 个答案:

答案 0 :(得分:0)

好的,你可以给WebPart一个id =“mywebpart”,然后只需使用一个JavaScript函数来隐藏它。

示例:

<style type="text/css>
    .hidden { display:none; }
</style>
<script>
function HideWebpart(id_of_webpart)
{
    var wp=document.getElementById(id_of_webpart);
    wp.className = "hidden";
}

function ShowWebpart(id_of_webpart)
{
    var wp=document.getElementById(id_of_webpart);
    wp.className = "";
}
</script>
<WebPartPages:WebPartZone>
..The SVG WebPart... <--Add WebPart with id here
</WebPartPages:WebpartZone>

<button onclick="HideWebpart('PASS WEB PART ID IN HERE')"/>

我认为问题是你想在getElementById只查找“id =”属性时使用“__WebPartId =”属性。所以要通过自定义属性查找元素,您需要使用以下代码而不是getElementById:

function getElementByAttribute(attr, value, root) {
    root = root || document.body;
    if(root.hasAttribute(attr) && root.getAttribute(attr) == value) {
        return root;
    }
    var children = root.children, 
        element;
    for(var i = children.length; i--; ) {
        element = getElementByAttribute(attr, value, children[i]);
        if(element) {
            return element;
        }
    }

用法:

getElementByAttribute("__WebPartId",'PASS WEB PART ID IN HERE');

注意:与getElementById相比,它会慢得多,因为你无法使用任何索引

或者,如果你可以使用jQuery库,你只需使用$('[__ WebPartId =“在这里使用通行证件ID']')