1

我已经部署了一个共享点网页并添加了一个自定义 Web 部件,它以客户希望的方式可视化数据。Webpart 的问题是我们无法在用户想要的时候缩放、修改或隐藏它。我们考虑将 Sharepoint webpart 嵌入到 Java 包装器中。通常,这在标准 HTML 页面上会很容易。问题是如何在 Sharepoint 的 java 包装器中嵌入 webpart?

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

Web 部件标头:

<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>
4

1 回答 1

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')"/>

我相信问题是您想使用“__WebPartId=”属性,而 getElementById 只会查找“id=”属性。因此,通过自定义属性查找元素,您将需要使用以下内容而不是 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="PASS WEB PART ID IN HERE"]')

于 2013-02-07T05:25:49.260 回答