0

我正在将 pivottable.js(在此处阅读http://www.wissel.net/stw/wisselblog.nsf后)添加到 xPages 应用程序中。组件加载,但是当允许过滤数据的组件在我的 xPage 上完成时,我遇到了问题,它刷新了整个页面,而不仅仅是图表。

这是该应用程序的演示,您可以看到,当您点击某个类别的下拉菜单时,您可以进行过滤,一旦完成,它会进行部分刷新以过滤数据。 http://nicolas.kruchten.com/pivottable/examples/mps.html

在我的 xPage 上,当我过滤数据时,它会刷新整个页面。有没有办法防止这种行为?

下面是相关代码。未包含的代码只是从未修改的项目中获取,但如果需要我可以包含。

我在 xpage 上使用自定义控件

<xc:ccPivot disableTheme="true"></xc:ccPivot></xp:view>

在自定义控件内部没有太多内容。我曾尝试调用页面底部的脚本,但没有任何改变。

  <script type="text/javascript" src="callPivotTable"></script>

 <xp:this.resources>
    <xp:script src="/pivot.js" clientSide="true"></xp:script>
    <xp:styleSheet href="/pivot.css"></xp:styleSheet>

    <xp:script src="/jquery-ui-1.9.2.custom.min.js"
        clientSide="true">
        </xp:script>
        <xp:script src="/d3_renderers.js" clientSide="true"></xp:script>
     </xp:this.resources>

 <div id="output" style="margin: 10px;"></div>

这是 callPivotTable 脚本

$(function(){
            var derivers = $.pivotUtilities.derivers;

            $.getJSON("./xRest.xsp/restService2", function(mps) {
                $("#output").pivotUI(mps                 

                );
            });
         });

您会注意到我在这里没有将 jQuery 称为资源。那是因为我使用的是加载 jQuery 的 bootstrap4xpages 扩展库。不确定这是否有所作为。

这是一个工作 nsf 的链接。它正在使用引导扩展库和 bootstrapv2.3.2,但会在 bootstrap3 中正常加载,但存在同样的问题。 链接到 nsf

4

1 回答 1

2

无需更改 pivot.js 代码。当数据透视表在表单中呈现时,它根本不起作用。任何小部件刷新都会强制发布整个表单。无法通过代码更改使其工作,所以我关闭了表单生成,现在它按预期工作。

转到 XPage 属性(所有属性选项卡)并将属性设置createFormfalse。或者在源代码中应该是这样的:

<?xml version="1.0" encoding="UTF-8"?>
<xp:view
    xmlns:xp="http://www.ibm.com/xsp/core"
    xmlns:xc="http://www.ibm.com/xsp/custom"
    createForm="false">
    <xp:this.resources>
        <xp:script
            src="/pivot.js"
            clientSide="true">
        </xp:script>
        <xp:styleSheet
            href="/pivot.css"></xp:styleSheet>
        <xp:script
            src="/jquery-ui-1.9.2.custom.min.js"
            clientSide="true">
        </xp:script>
        <xp:script
            src="/jquery.ui.touch-punch.min.js"
            clientSide="true">
        </xp:script>
    </xp:this.resources>
    <xp:scriptBlock>
        <xp:this.value><![CDATA[$( function() {
    $("#output").pivotUI( [ {
        color : "blue",
        shape : "circle"
    }, {
        color : "red",
        shape : "triangle"
    } ], {
        rows : [ "color" ],
        cols : [ "shape" ]
    });
});]]></xp:this.value>
    </xp:scriptBlock>
    <div
        id="output"
        style="margin: 10px;">
    </div>
</xp:view>
于 2014-11-25T18:25:56.243 回答